【问题标题】:Redirect to AccessDenied page when user is not authorized用户未授权时重定向到 AccessDenied 页面
【发布时间】:2011-06-13 10:59:26
【问题描述】:

我创建了一个自定义 AuthorizationAttribute,我将其放置在我的控制器上。我关注了this article。我已经在 OnAuthorization 方法中实现了自定义授权逻辑,并且效果很好。当用户授权失败时,我目前正在执行以下操作:

// if authorization check fails...
filterContext.Result = new HttpUnauthorizedResult();

这会显示用户名/密码提示。

我的问题是当用户授权失败时,将用户发送到“拒绝访问”类型页面的推荐方式是什么?

我正在使用 MVC3。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 authorization


    【解决方案1】:

    在登录页面,您可以检查用户是否已经登录并显示拒绝访问消息而不是登录提示。

    【讨论】:

    • 虽然这可能适用于单个站点,但此解决方案根本不适用于单点登录系统,除非您希望安全令牌服务隐式理解所有角色/用户访问权限到您的依赖方网站,这将是非常不正确的 IMO。
    【解决方案2】:

    最后我选择了直接重定向:

    public override void OnAuthorization(AuthorizationContext filterContext)
    ...
    // if authorization check fails...
    filterContext.Result = new RedirectResult(AccessDeniedPage);
    

    编辑: Rob Conery 有一篇很好的文章详细描述了这一点,ASP.NET MVC: Securing Your Controller Actions

    【讨论】:

      【解决方案3】:

      你可以抛出HttpException,错误代码为401

      【讨论】:

        猜你喜欢
        • 2011-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-11
        • 1970-01-01
        • 2012-05-16
        相关资源
        最近更新 更多