我目前正在开发一些安全措施来保护Web服务调用。我决定扩展authorize属性并覆盖isAuthorized函数以及ActionFilterAttribute OnActionExecuted。但是,当我调试程序时,我注意到如果我要添加[授权(角色="阅读")]班级和[授权(角色="管理员")]在该类中的api函数上,isAuthorized总共被调用3次。这可能不是一个大问题但是因为在我的isAuthorized中,我在数据库中创建和验证令牌。如果我能够消除这个冗余的过程并且只是在每次服务调用时调用一次isAuthorized,那将是理想的。
public class CustomuAuthorizeAttribute : AuthorizeAttribute
{
protected override bool IsAuthorized(HttpActionContext actionContext)
{
bool allowedAccess = true;
... logic
}
}
覆盖已执行的OnAction。这实际上只有在isAuthorized被击中3次后才能获得命中。
public class CustomAuthorizeFilter : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
.. logic
}
}
修改 我发现将[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]添加到authorizeattribute calss上可以解决多次调用的问题