MVC3重定向到“未授权”页面不起作用?

时间:2012-01-17 05:57:05

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

在询问this question授权之后,我添加了一个新的自定义属性,试图将未经授权的用户重定向到一个页面,其中包含有关请求访问等的更多详细信息等。

public class RedirectAuthorize:AuthorizeAttribute
    {
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            //base.HandleUnauthorizedRequest(filterContext);

            filterContext.Result = new RedirectResult("Unauthorized");
        }
    }

我用我的家庭控制器装饰了这个属性和正确的(Role =“...”),这个“工作”......它会在预期时达到方法。

我在名为Unauthorized.cshtml的共享视图文件夹中添加了一个vanilla视图,但我只是得到了“无法找到资源”404错误。

显示的网址是否正确?

我的猜测是我需要指定一个控制器/动作而不是一个页面?但错误处理程序重定向到Error.cshtml而不需要控制器?

感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

问题是您正在使用RedirectResult强制浏览器请求给定的URL。但是当浏览器请求时,没有匹配的路由。因此它会抛出404错误。

尝试

filterContext.Result = new ViewResult { ViewName = "Unauthorized" };