我正在尝试确定API方法是否具有授权属性,尽管我可以很容易地发现使用MethodInfo
,但似乎无法找到一种方法来处理在设置Authorize
时进行检查的情况。控制器级别。
基本上我需要知道控制器或方法是否具有Authorize
属性。
public class SecurityRequirementsOperationFilter : IOperationFilter
{
public void Apply(Operation operation, OperationFilterContext context)
{
var hasAuthorizeAttribute = context.MethodInfo
.GetCustomAttributes(true)
.OfType<AuthorizeAttribute>()
.Any();
if (!hasAuthorizeAttribute)
{
operation.Security = new List<IDictionary<string, IEnumerable<string>>>();
}
}
}
答案 0 :(得分:0)
我设法找到一种方法来确定方法是否具有控制器属性或方法Authorize
属性。
var hasAuthAttribute = context.MethodInfo.DeclaringType.GetCustomAttributes(true)
.Union(context.MethodInfo.GetCustomAttributes(true))
.OfType<AuthorizeAttribute>()
.Any();