将权限属性添加到 Swashbucke-Swagger-Documentation
Add Permission-Attribute to Swashbucke-Swagger-Documentation
将 Swashbuckle 集成到我的 .Net Web-Api 项目 (.Net Framework 4) 我正在寻找一种方法来记录允许执行相应方法的角色。
我的每个 web-api 方法都有一个自定义属性,用于检查请求用户的 ActiveDirectory-Group 以及是否允许用户执行该操作。但现在我想记录一下使用 Swashbuckle-Swagger 之类的
///
///<AllowedRole>Administrator</AllowedRole>
///
public IHttpActionResult Index(){
...
}
或
[SwaggerAllowedRole("Administrator")]
public IHttpActionResult Index(){
...
}
我很想知道有什么标准可以使用。
谁能给我一个妙招?
现在,我使用 "venderExtension" 属性解决了这个问题。
我创建了一个 "SwaggerGroups"-Attribute:
[AttributeUsage(AttributeTargets.Method)]
public class SwaggerGroupsAttribute : Attribute
{
public SwaggerGroupsAttribute(params string[] groups)
{
this.Groups = groups;
}
public IEnumerable<string> Groups{ get; }
}
以及读取属性并将列表添加到 vendorExtension 的操作过滤器:
public class GroupPermission: IOperationFilter
{
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
var attributes = apiDescription.GetControllerAndActionAttributes<SwaggerGroupsAttribute>().SingleOrDefault();
if (attributes == null) return;
if(operation.vendorExtensions == null) operation.vendorExtensions = new Dictionary<string, object>();
var permissionList = new List<string>();
foreach(var permission in attributes.Permissions)
{
permissionList.Add(permission);
}
operation.vendorExtensions.Add("someKey", permissionList);
}
}
通过此设置,我可以按如下方式定义允许的角色:
[SwaggerGroups("Administrator")]
public IHttpActionResult Index(){
...
}
将 Swashbuckle 集成到我的 .Net Web-Api 项目 (.Net Framework 4) 我正在寻找一种方法来记录允许执行相应方法的角色。
我的每个 web-api 方法都有一个自定义属性,用于检查请求用户的 ActiveDirectory-Group 以及是否允许用户执行该操作。但现在我想记录一下使用 Swashbuckle-Swagger 之类的
///
///<AllowedRole>Administrator</AllowedRole>
///
public IHttpActionResult Index(){
...
}
或
[SwaggerAllowedRole("Administrator")]
public IHttpActionResult Index(){
...
}
我很想知道有什么标准可以使用。 谁能给我一个妙招?
现在,我使用 "venderExtension" 属性解决了这个问题。 我创建了一个 "SwaggerGroups"-Attribute:
[AttributeUsage(AttributeTargets.Method)]
public class SwaggerGroupsAttribute : Attribute
{
public SwaggerGroupsAttribute(params string[] groups)
{
this.Groups = groups;
}
public IEnumerable<string> Groups{ get; }
}
以及读取属性并将列表添加到 vendorExtension 的操作过滤器:
public class GroupPermission: IOperationFilter
{
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
var attributes = apiDescription.GetControllerAndActionAttributes<SwaggerGroupsAttribute>().SingleOrDefault();
if (attributes == null) return;
if(operation.vendorExtensions == null) operation.vendorExtensions = new Dictionary<string, object>();
var permissionList = new List<string>();
foreach(var permission in attributes.Permissions)
{
permissionList.Add(permission);
}
operation.vendorExtensions.Add("someKey", permissionList);
}
}
通过此设置,我可以按如下方式定义允许的角色:
[SwaggerGroups("Administrator")]
public IHttpActionResult Index(){
...
}