我正在使用基于角色的授权,并且当他们没有正确的角色时,我已经让这个类处理重定向到自定义视图。MVC 5 - 角色授权 - 自定义未授权页面
public class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
base.HandleUnauthorizedRequest(filterContext);
}
else if (!this.Roles.Split(',').Any(filterContext.HttpContext.User.IsInRole))
{
filterContext.Result = new ViewResult
{
ViewName = "~/Views/Shared/_Unauthorized.cshtml"
};
}
else
{
base.HandleUnauthorizedRequest(filterContext);
}
}
}
而我只是把它添加到这样每个控制器动作:
[MyAuthorize(Roles = "Admin")]
这工作得很好,但我希望得到我的未经授权的网页上一些更多的信息。 所以问题是我如何传递信息,如他们试图访问哪个页面,需要什么角色以及他们已拥有哪些角色。 我该在哪里做?在MyAuthorizeAttribute类中?我如何将信息传递给视图?
这并不真正起作用,因为当我来到此页面时我没有得到异常。所以堆栈跟踪和消息是空的。这不是我正在寻找的信息。我正在寻找一种方法来获得所要求的角色。可以从MyAuthorizeAttribute类中使用“this.Roles”行读取,但我必须以某种方式将该角色发送到视图。并循环显示当前用户的角色并显示它们 – stibay
是的,这只是例外。 –