如何共享管理员角色和匿名角色的授权方法

时间:2017-03-22 10:13:47

标签: c# asp.net-web-api asp.net-web-api2 authorize-attribute asp.net-roles

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

2 个答案:

答案 0 :(得分: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;
} 

答案 1 :(得分: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;
}