将 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(){ 
    ... 
} 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!