Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为管理员角色和匿名角色共享授权方法_C#_Asp.net Web Api_Asp.net Web Api2_Authorize Attribute_Asp.net Roles - Fatal编程技术网

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

C# 如何为管理员角色和匿名角色共享授权方法,c#,asp.net-web-api,asp.net-web-api2,authorize-attribute,asp.net-roles,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 StackOver

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

您可以使用逗号
[Authorize(roles=“role1,role2”)]
将pas角色分开。但是在这个案例中,您不需要发送角色。因为没有匿名的角色

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

您可以对特定角色和匿名角色使用
[Authorize]
,而且在方法中使用基于角色的验证,而不是在属性级别

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

为什么不使用
if(this.User.IsInRole(“Admin”){…}else{…}
?@haim770-授权属性的结构是什么?我需要给出
[Authorize???]
只需应用
[Authorize]
,不带参数。它将确保只有授权用户才能访问该操作(无论其角色如何)。然后您必须使用
if…
@haim770检查他们的角色-非常感谢。。。