MVC 4未经授权的访问错误页面

时间:2013-09-19 15:45:46

标签: asp.net-mvc asp.net-mvc-4 custom-error-pages unauthorizedaccessexcepti custom-error-handling

我正在尝试为MVC 4应用程序创建自定义错误页面。但我似乎无法找到适当的参考资料来了解它。

我有一个特定的要求。这与Unauthorized access错误有关。假设我有一组只能由特定类型的用户访问的页面。用户键入的Admin有权访问管理页面,但用户键入的Basic不是。

所以我想要做的是,如果类型为Basic的用户登录到网站,如果他们尝试访问管理页面,而不是将它们扔到登录页面,则向他们显示一条消息错误页面。

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

例外过滤器怎么样?

 [HandleError(Exception = typeof(UnauthorizedAccessException), View = "MyErrorPage")]
 public class MyController { }

我暂时无法测试,如果这不起作用,请告诉我,我会为此创建一个自定义过滤器。

<强>更新

由于您已创建自己的自定义属性,因此您可以通过TempData从您的属性向您的视图传递信息:

 public void OnAuthorization(AuthorizationContext filterContext)
 {
     //Note you could assign a complex type here, let's just assign a string
     filterContext.Controller.TempData["ErrorDetails"] = "Here are my details"; 

     // Redirect to an "Unauthorized" controller
     filterContext.HttpContext.Response.Redirect(urlHelper.Action("Index", "Unauthorized"), true);