如何正确使用IUserClaimsPrincipalFactory<T>?官方文档示例疑问解析
问题解答
你提到的文档确实缺失了关键的配置说明,相关逻辑如下:
- 你看到的
await AuthorizationService.AuthorizeAsync(User, "IsAdmin")代码里的第二个参数是策略名称,和你之前通过IUserClaimsPrincipalFactory添加的声明没有直接的自动绑定关系,需要你手动添加授权策略配置才能关联起来,对应.NET 5的Startup.cs配置代码示例如下:
services.AddAuthorization(options => { options.AddPolicy("IsAdmin", policy => // 此处声明类型要和你添加声明时使用的类型保持一致 policy.RequireClaim(JwtClaimTypes.Role, "admin")); });
- 你对
IsAdmin属性的隐含逻辑判断是正确的:确实需要你自行实现业务逻辑(比如后台用户管理功能)给数据库中存储的ApplicationUser实体的IsAdmin字段赋值,工厂类从数据库读取到用户实体后才能基于该字段生成对应声明。 - 该文档的疏漏就在于完全省略了上述授权策略的配置步骤,导致前后代码逻辑脱节,也没有明确说明
IsAdmin字段的赋值逻辑,确实容易造成误解。
内容的提问来源于stack exchange,提问作者Gary McGill
相关产品推荐
相关产品推荐

