我創建了一個非常簡單的授權屬性對於我的MVC控制器,是爲了重定向到一個控制器,允許顯示一個「未授權」消息:授權不工作的自定義authorizeattribute
public class ReportAuthorizeAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary
{
{ "action", "ReportDenied" }
, { "controller", "Authorization"}
});
}
}
我將其應用到我的主站點控制器上:
[ReportAuthorize([email protected]"Domain\GroupName")]
public class ReportController : Controller
{
//etc
}
即使我在@「Domain \ GroupName」中,我也會被踢出局。實際上,如果我將其更改爲Users = @「Domain \ MyUserName」,它仍會失敗!
我已將其跟蹤到IIS設置匿名身份驗證,該站點已啓用。不幸的是,我不能禁用我們的生產系統上的匿名訪問,因爲這個項目是一個更大的MVC項目的一部分,其中許多其他控制器沒有正確的屬性。但是,當我在IIS中本地更改它時,我通常會進入。
現在,如果我換到正常的授權屬性:
[Authorize(Roles = @"Domain\GroupName")]
public class ReportController : Controller
{
//etc
}
我得到了(我假設,因爲我還沒有定義,當未經授權的用戶試圖連接任何特殊的行爲)。
我有哪些方法可以解決此屬性問題?我只需要獲取ReportsAuthorize屬性,以在用戶匿名之前正確認證用戶。
與標準authorizeattribute的問題是,如果我放下一組名我不是一個部分的它挑戰我要我的憑據,但無法正確驗證我和反覆詢問,直到我取消。 – 2014-09-03 20:04:32
@CBauer - 如果提示是你的問題,然後是,進入自定義屬性。根據我的經驗,這不是一個問題,因爲我會使用MvcSiteMapProvider之類的功能來啓用安全修剪功能,以便用戶看不到指向它們未授權的URL的鏈接。因此用戶很少遇到提示。 – Joe 2014-09-04 10:01:01
不幸的是,我試圖保護的網頁是通過直接鏈接傳播的網站,如果我可以定位角色並讓沒有角色的人員轉發到「您不被允許訪問這個資源「頁面。 – 2014-09-04 12:11:29