我正在尝试为MVC 4
应用程序创建自定义错误页面。但我似乎无法找到适当的参考资料来了解它。
我有一个特定的要求。这与Unauthorized access
错误有关。假设我有一组只能由特定类型的用户访问的页面。用户键入的Admin
有权访问管理页面,但用户键入的Basic
不是。
所以我想要做的是,如果类型为Basic
的用户登录到网站,如果他们尝试访问管理页面,而不是将它们扔到登录页面,则向他们显示一条消息错误页面。
任何人都可以帮我解决这个问题吗?
答案 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);