【问题标题】:How do I show an authorization error message in an ASP.NET MVC 2 application?如何在 ASP.NET MVC 2 应用程序中显示授权错误消息?
【发布时间】:2011-03-14 05:02:27
【问题描述】:

我使用 Authorize 属性根据用户角色过滤控制器操作,但如果尝试未经授权的操作,用户将被重定向回登录页面。作为我的用户,我会觉得这令人困惑和恼火。

如何改为显示一条错误消息,通知用户他们需要某些角色,并保持在他们尝试操作的视图上?

【问题讨论】:

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


    【解决方案1】:

    您需要编写一个不返回HttpUnauthorizedResult 的自定义Authorize 属性。保持在同一个视图上也是一项艰巨的任务,因为您可能需要在请求之后保留所有上下文。

    【讨论】:

    • 哎哟!我是否可以返回一个自定义的 HttpUnauthorizedResult 路由到错误视图而不是登录视图,并在错误视图上提供一个 ActionLink 回到起始视图?
    • 编写一个自定义的“Authorize”属性比您想象的要容易得多,它是处理您的情况的最简洁的方法,并且它也可以在您的整个项目中重复使用。
    • @Profk,如果你想被路由到错误视图Response.Redirect,或者在过滤器内返回ViewResult
    • @Saajid,这很容易,但我总是想太多,比如使用某种指令重定向回原始视图以显示带有错误建议的模型弹出窗口。我现在将坚持使用错误视图。
    • @Darin,恐怕我现在知道从哪里开始实施您的建议。我知道它在我的自定义属性中,但是我将如何执行 Response.Redirect,或者,我的 Viewresult 返回如何知道去哪里?
    【解决方案2】:

    到目前为止我找到的解决方案是您需要在 _ViewStart 中保存当前页面的会话(可能是 MVC2 中的其他内容),然后在您的自定义授权类中使用它来重定向到页面并显示消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-13
      • 2010-10-13
      • 2013-10-02
      • 1970-01-01
      • 2013-10-07
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      相关资源
      最近更新 更多