检查Web API中的AllowAnonymousAttribute

本文关键字:AllowAnonymousAttribute 中的 API Web 检查 | 更新日期: 2023-09-27 18:13:14

System.Web.Mvc.ActionDescriptor具有方法IsDefined,该方法有助于确定是否为此成员定义了指定属性类型的一个或多个实例。

System.Web.Http.Controllers.HttpActionDescriptor没有此方法。

如何使用HttpActionDescriptor检查AllowAnonymousAttribute

检查Web API中的AllowAnonymousAttribute

我找到了。我可以使用GetCustomAttributes方法。例如(来自AuthorizeAttribute实现(:

private static bool SkipAuthorization(HttpActionContext actionContext)
{
  if (!Enumerable.Any<AllowAnonymousAttribute>((IEnumerable<AllowAnonymousAttribute>) actionContext.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>()))
    return Enumerable.Any<AllowAnonymousAttribute>((IEnumerable<AllowAnonymousAttribute>) actionContext.ControllerContext.ControllerDescriptor.GetCustomAttributes<AllowAnonymousAttribute>());
  else
    return true;
}

@FireShock的答案是正确的,这里有一个我认为更容易阅读的版本:

private static bool ShouldSkipAuthorization(HttpActionContext actionContext)
{
    return 
        actionContext.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>(true).Any() ||
        actionContext.ActionDescriptor.ControllerDescriptor.GetCustomAttributes<AllowAnonymousAttribute>(true).Any();
}
相关文章:
  • 没有找到相关文章