我已经在我的role-based应用程序中配置了owin role-based授权。然后,我需要添加403 http错误的自定义处理。
我知道两种方法:
Web.config设置:HandleUnauthorizedRequest属性中重写的Authorize方法内部的配置:
如果(filterContext.HttpContext.User?.Identity.IsAuthenticated ??){ filterContext.Result =新的RedirectToRouteResult(新的RouteValueDictionary { {"action“、"NoAccess"}、{”控制器“、"Error"} });//我尝试了以下两种变体:下面的行和没有它的RouteValueDictionary}当我试图访问我的用户不允许访问的资源时,这两种方法在我的本地机器上都能很好地工作,并且我看到了我的自定义页面中的403错误,但是当我在azure门户上部署我的应用程序时,我只看到了带有以下文本的白色页面:“您没有查看此目录或页面的权限。”正如我所理解的,我需要在azure门户上配置这个行为,以及在我的代码中配置它。
有人能给我建议吗?
发布于 2018-04-05 14:16:25
我找到了答案。如果我在控制器方法中手动设置响应代码,则会出现此问题,如下所示:
public ActionResult NoAccess()
{
Response.StatusCode = 403;
return View();
}如果删除此状态设置,则重定向工作正常。解决方案是将以下标志设置为true:TrySkipIisCustomErrors
public ActionResult NoAccess()
{
Response.TrySkipIisCustomErrors = true;
Response.StatusCode = 403;
return View();
}那么每件事都是正确的。
https://stackoverflow.com/questions/49602030
复制相似问题