MVC3重定向到“未经授权”页面不工作?
问题描述:
问this question有关授权之后,我一直在试图未经授权的用户重定向到这对请求访问等等等等MVC3重定向到“未经授权”页面不工作?
public class RedirectAuthorize:AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
//base.HandleUnauthorizedRequest(filterContext);
filterContext.Result = new RedirectResult("Unauthorized");
}
}
我饰我家控制器的更多详细信息的页面增加了一个新的自定义属性有了这个属性和正确的(Role =“...”)和这个“有效”..即它按照预期的方式触及该方法。
我添加了一个名为Unauthorized.cshtml
的共享视图文件夹的香草视图,但我只是得到“资源无法找到”404错误。
显示的URL看起来是正确的?
我的猜测是我需要指定一个控制器/操作而不是页面?但错误处理程序重定向到Error.cshtml
而不需要控制器?
感谢您的任何帮助。
答
问题是您使用的是RedirectResult
这迫使浏览器请求给定的URL。但是,当浏览器请求它时,没有匹配的路线。因此它会抛出一个404错误。
尝试
filterContext.Result = new ViewResult { ViewName = "Unauthorized" };
如此简单,如此明显。 (所以我为什么没有想到这一点!) – BlueChippy 2012-01-17 06:42:34