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

Blu*_*ppy 4 c# authorization asp.net-mvc-3

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

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

            filterContext.Result = new RedirectResult("Unauthorized");
        }
    }
Run Code Online (Sandbox Code Playgroud)

我用这个属性和正确的(Role ="...")装饰了我的Home控制器,这个"工作"......即它在预期的时候点击方法.

我已经在调用的共享视图文件夹中添加了一个vanilla视图,Unauthorized.cshtml但我只是得到"找不到资源"404错误.

显示的URL似乎是正确的?

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

谢谢你的帮助.

Era*_*nga 6

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

尝试

filterContext.Result = new ViewResult { ViewName = "Unauthorized" };
Run Code Online (Sandbox Code Playgroud)