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检查他们的角色-非常感谢。。。