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; 
}