我在控制器中的方法顶部使用下面的行进行基于角色的身份验证
[HttpGet("getAll"), Authorize(Roles = "GetAll")]
当用户没有访问此角色的权限时,我想告诉用户您需要该角色"GetAll";
有可能吗?
您可以检查方法中的角色,如下所示:
[HttpGet("getAll"), Authorize]
public async Task<IActionResult> GetAll()
{
if (!Roles.Any(r => r == "getAll"))
{
return Unauthorized("Pass the role name");
}
return Ok();
}
角色包含用户访问的角色
我知道我很晚了,但这可能会对将来的人有所帮助。我添加了一个操作过滤器,并在操作/控制器上使用它。我也把它添加到我的模板中,https://github.com/arham-anees/CleanArchitectureNetCore/blob/main/CleanArhitectureNetCore.WebApi/ActionFilters/Authorize.cs
首先创建一个属性类public class AuthorizeAttribute:Attribute, IAuthorizationFilter
。您可以命名任何东西而不是AuthorizeAttribute
,然后在没有Attribute
部分的情况下用作操作/控制器的属性。
该操作将在任何时候调用,并将执行操作和执行您的操作。对于基于角色的Authenticated,我在基于角色对用户进行身份验证时,保持了控制器的属性干净。你可以在这里看到https://github.com/arham-anees/CleanArchitectureNetCore/blob/main/CleanArhitectureNetCore.WebApi/Controllers/ValuesController.cs#L18