【问题标题】:AuthorizeAttribute behavior in ASP.NET MVC when authentication mode is set to Windows身份验证模式设置为 Windows 时 ASP.NET MVC 中的 AuthorizeAttribute 行为
【发布时间】:2010-12-18 22:24:05
【问题描述】:

我有一个受AuthorizeAttribute 保护的控制器。当授权失败时,我只得到一个空页面。如果我覆盖OnAuthorization(),我可以看到在调用base.OnAuthorization() 之后filterContext.Result 为空(为什么?)。如果我覆盖OnException() 并设置断点,它永远不会命中。有人可以解释一下它应该如何工作吗?我怎样才能让它重定向到指定的页面?我可以在哪里注入以记录失败的授权尝试(最好不要编写自定义过滤器)?如果它很重要,我会使用 MVC 3 RC1。

【问题讨论】:

    标签: asp.net-mvc security authorization


    【解决方案1】:

    您想要覆盖 AuthorizeAttribute.HandleUnauthorizedRequest 方法。这是默认实现:

    protected virtual void HandleUnauthorizedRequest(AuthorizationContext filterContext) {
        // Returns HTTP 401 - see comment in HttpUnauthorizedResult.cs.
        filterContext.Result = new HttpUnauthorizedResult();
    }
    

    您可能希望将 Result 设置为 RedirectResult(或其他结果,具体取决于您所需的逻辑)。这也是记录日志的好地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 2018-07-19
      • 1970-01-01
      相关资源
      最近更新 更多