在询问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
而不需要控制器?
感谢您的帮助。
答案 0 :(得分:6)
问题是您正在使用RedirectResult
强制浏览器请求给定的URL。但是当浏览器请求时,没有匹配的路由。因此它会抛出404错误。
尝试
filterContext.Result = new ViewResult { ViewName = "Unauthorized" };