角色基础身份验证出现自定义错误,角色名称在dot net 6中



我在控制器中的方法顶部使用下面的行进行基于角色的身份验证

[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

最新更新