我正在使用基於角色的授權,並且當他們沒有正確的角色時,我已經讓這個類處理重定向到自定義視圖。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
是的,這只是例外。 –