AllowAnonymous属性使Authorize被忽略

时间:2016-08-03 01:50:29

标签: asp.net-mvc

我有一个需要全局授权的管理信息中心项目,我在

上进行了设置
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new AuthorizeAttribute());
    }

该代码使我的所有控制器都被授权..并且有一个控制器具有[AllowAnonymous]属性..但是我突然改变请求,需要对此控制器上的操作进行授权..

[AllowAnonymous]
public class AuthController : Controller
{
    [Authorize(Roles = "Admin")]
    public ActionResult BumbaSection()
    {
        return View();
    }
}

这不起作用,我仍然可以访问这个BumbaSection动作..有什么想法吗? 感谢

1 个答案:

答案 0 :(得分:3)

在我查看授权代码后,这部分代码使授权无效:

public virtual void OnAuthorization(AuthorizationContext filterContext)
{
  //code here

  if (filterContext.ActionDescriptor.IsDefined(typeof (AllowAnonymousAttribute), true) || filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof (AllowAnonymousAttribute), true))
      return;

  //code here    
}

在authorize属性类中覆盖这段代码,我的代码开始工作..也许这对我有些问题的人有用