向 AspNet Core 3.0-preview React 项目添加授权(带身份验证)

Add Authorization to AspNet Core 3.0-preview React project (with Authentication)

使用 dotnet new react --name myproject --auth Individual 创建一个新的 aspnet 核心项目会设置一个带有 IdentityServer4 和身份验证的新 React 项目。

我想添加授权(角色、策略、声明),这样我就可以像这样装饰方法:

[HttpGet]
[Authorize(Roles = "Administrator")]    <-- LIKE THIS
public IEnumerable<WeatherForecast> Get()
{
    ...
}

我在一个没有 IdentityServer 的项目中设法做到了这一点,而且我在谷歌上搜索了很多小时都没有成功。

模板项目添加授权需要添加哪些步骤?

提前致谢!

我尝试过向 Startup.cs 添加不同的内容,例如:

services.AddRoles<IdentityRole>();
// ... or ...
services.AddAuthorization(...);
$ dotnet --version
3.0.100-preview7-012821

我会尝试添加尽可能多的信息,希望您使用身份服务器 4 并在反应前端使用隐式流,并且 API 将您的身份服务器作为授权。

您需要一个客户端和身份服务器上的一个 API 资源。 1. 反应前端的隐式流程。 2. 您 API 需要添加为 api 资源。

隐式流客户端应该可以访问 api 客户端的范围。

按照 https://github.com/IdentityServer/IdentityServer4.AccessTokenValidation

中的步骤操作

用户需要具有管理员角色。您可以直接在数据库的用户角色 table 中将其添加为角色,或者在 google 和 [=10= 中搜索 身份服务器 的配置文件服务] 方法检查用户 ID 并将管理员角色作为角色声明添加到已发布的声明列表中。

context.IssuedClaims.Add(roleClaim); 完成此操作后,现在反应客户端收到的令牌具有角色声明,表明它具有管理员角色,并且在调用 api 时,api 将知道该角色存在。