0

我正在WebAPI中工作。我有以下兩種方法將數據發送到相應的客戶端。如何共享管理員角色和匿名角色的授權方法

的方法的簽名是

[HttpPost] 
[Authorize] 
public string GetMessage() 
{ 
    return "I'm a Member of StackOverflow"; 
} 

[HttpPost] 
[Authorize(Roles = "Admin")] 
public string GetAdminMessage() 
{ 
    return "I'm a Member of StackOverflow since 2010"; 
} 

請協助我怎麼會這兩種方法在一個單一的方法,基於角色應該返回數據。

預期的骨骼結構應該是

[HttpPost] 
[Authorize ???] 
public string GetMessage() 
{ 
    return "I'm a Member of StackOverflow" + (Roles == Admin) ? "since 2010" : String.Empty; 
} 
+1

爲什麼不使用'if(this.User.IsInRole(「Admin」)){...} else {...}'? – haim770

+0

@ haim770 - 我需要賦予'[Authorize ???]'什麼是Authorize屬性的結構' –

+1

只需應用沒有參數的[Authorize]'。它將確保只有授權用戶才能訪問該操作(不管他們的角色如何)。然後你必須使用'if ...' – haim770

回答

0

可以考績角色單獨用逗號[Authorize(Roles="role1,role2")]。但你不需要在這種情況下發送角色。因爲沒有匿名角色。

[HttpPost] 
public string GetMessage() 
{ 
    return "I'm a Member of StackOverflow" + User != null && User.IsInRole("Admin") ? "since 2010" : String.Empty; 
} 
0

可以使用[Authorize]兩個具體角色和匿名角色,而且使用不屬性水平的方法中的基於角色的驗證。

[HttpPost] 
[Authorize] 
public string GetMessage() 
{ 
    return "I'm a Member of StackOverflow" + 
     ((this.User != null) && (this.User.IsInRole("Admin"))) 
      ? "since 2010" : String.Empty; 
}