在使用具有域授权的 mvc 内网模板时,如何根据控制器重定向到授权失败时的某些错误页面?
所以,我有一个控制器类:
[AuthorizeWithRedirect(Users = @"user")]
public class MyController : Controller
{
...
}
默认情况下,我不会被重定向到任何地方。如果我在另一个用户下打开页面,我只会看到一个空白页面。问题是,如果授权失败,我希望将请求重定向到不同控制器的不同页面。也就是说,一页用于MyController
,另一页用于其他控制器,等等。
我知道我可以派生AuthorizeAttribute
并覆盖HandleUnauthorizedRequest
方法。但我不能让它工作:
public class AuthorizeWithRedirect : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext context)
{
UrlHelper urlHelper = new UrlHelper(context.RequestContext);
context.Result = new RedirectResult(urlHelper.Action("MyErrorPage"));
}
}
我收到一个错误,说找不到指定的 url,而文件夹MyErrorPage.cshtml
中确实存在。Views\Shared
编辑
[Authorize(Users = @"user")]//should be redirected to ErrorPage1
public class MyController1 : Controller
{
...
}
尽管
[Authorize(Users = @"user")]//should be redirected to ErrorPage2
public class MyController2 : Controller
{
...
}
即同一个授权失败,不同控制器的不同错误页面