【问题标题】:How to handle authorisation failure in MVC3如何处理 MVC3 中的授权失败
【发布时间】:2012-05-03 16:59:46
【问题描述】:

我正在使用 Windows 身份验证和自定义角色提供程序构建一个内部(Intranet)MVC3 应用程序。只要用户具有请求的角色,身份验证和角色提供程序就可以正常工作。

例如,我有一个UserContoller,它允许应用程序的用户管理应用程序内的用户帐户。显然我想限制对这个控制器的访问。

如果我这样做:

[Authorize]
public class UserController : Controller
{
    ...
}

然后 Windows 身份验证工作正常,并且用户透明登录。但是,我想将控制器限制为特定的用户组。所以我这样做:

[Authorize(Roles="UserAdmin")]
public class UserController : Controller
{
    ...
}

如果我的角色提供者返回的角色列表包括“UserAdmin”,那么一切都很好,用户可以访问控制器。

但是,如果用户不在角色中,则浏览器(在 IE8 和 FF10 上测试)会提示输入凭据。如果取消,则服务器返回 401 错误页面。

所以我的问题是,我如何处理用户不在请求角色中的情况,并将他返回到应用程序的主页操作,或其他一些操作以提供用户友好的消息?

【问题讨论】:

    标签: asp.net-mvc-3 windows-authentication roleprovider


    【解决方案1】:

    您还可以创建一个继承自 AuthorizeAttribute 的自定义属性

    覆盖HandleUnauthorizedRequest 方法

    【讨论】:

      【解决方案2】:

      您可以在 web.config 中指定要在 401 案例中显示的 url。

      <customErrors mode="RemoteOnly" defaultRedirect="/Error/">
         <error statusCode="401" redirect="/AuthorizationFailed"/>
      </customErrors>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-13
        • 1970-01-01
        • 2020-04-03
        • 2021-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多