2014-09-04 99 views
0

我使用多個角色不工作

Authorize[Roles = "Agent")] 

這一直工作正常,但現在我要檢查,如果他們也是在付費用戶組,我想我可能只是這樣做:

Authorize[Roles = "Agent, Paid")] 

但是,上述工作不正常,似乎是檢查我是否在他們中的任何角色,而不是如果我在兩個。我在這裏做什麼?

回答

1

你應該做你的自定義Authorize Attribute

public class AuthorizeMultipleAttribute : AuthorizeAttribute 
{ 

    //Authorize multiple roles 
    public string MultipleRoles { get; set; } 

    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     var isAuthorized = base.AuthorizeCore(httpContext); 
     if (!isAuthorized) 
     {     
     return false; 
     } 

     //Logic here 
     //Note: Make a split on MultipleRoles, by ',' 
     //User is in both roles => return true, else return false 
    } 

} 

DEMO:

[AuthorizeMultiple(MultipleRoles ="Agent,Paid")] 
+0

我不理解怎麼辦的邏輯,我知道我必須檢查是否有角色中,如果沒有返回false但如何我得到的角色來檢查? – Michael 2014-09-04 09:19:52