2010-01-27 159 views
1

我使用內置的授權過濾器的asp.net mvc。 我唯一的問題是,我不希望它重定向我的用戶登錄頁面,當他們沒有執行某個操作的權限時......它始終將他們帶到登錄頁面,即使它已經登錄(但沒有管理員角色)..我想能夠決定在他們試圖執行一個行動後,他們不應該把他們帶到哪裏?幫助與asp.net mvc授權

回答

2

子類AuthorizeAttribute並重寫HandleAuthorizationFailed()方法。此方法的默認邏輯是它將上下文的結果設置爲HttpUnauthorizedResult,但您可以通過此方法執行任何操作。然後使用這個新屬性爲目標方法賦予屬性。

0

由於Levi說您需要重寫AthorizeAttribute來創建自己的自定義AttributeFilter。像

public class CustomAuthorizeAttribute : AuthorizeAttribute { 

    public string Url { get; set; } 

    public override void OnAuthorization(AuthorizationContext filterContext) { 
    if (!filterContext.HttpContext.User.Identity.IsAuthenticated) { //or custom authorization logic 
     filterContext.HttpContext.Response.Redirect(Url); 
    } 
    base.OnAuthorization(filterContext); 
    } 

} 


[CustomAuthorizeAttribute(Url="/Admin/AccessDenied")] 
public ActionResult Admin() { 
    return View(); 
} 

東西從this similar question

採取