ASP 核心 2.2 API。我有 2 项政策:services.AddAuthorization(options => {
options.AddPolicy("RequireClientClaim", policy => policy.RequireAuthenticatedUser().RequireClaim("Client"));
options.AddPolicy("AllAuthenticated", policy => policy.RequireAuthenticatedUser());
});即使有客户声明,“RequireClientClaim”也不允许任何用户。声明从数据库中获取并添加到 JWT 令牌中。令牌与授权一起发回:Bearer xxxx 标头。我可以在 context.HttpContext.User.Claims 中用户的下一个请求中看到此声明:“AllAuthenticated”允许每个人:)所以我猜这里有些东西很糟糕。 [HttpPost, Route("refresh")] [Authorize(Policy = "AllAuthenticated")] public async Task<IActionResult> ActionName(){}我没有在过滤器中放置任何策略,因为我的策略并不打算应用于所有控制器和操作。启动.cs
1 回答
精慕HU
TA贡献1845条经验 获得超8个赞
第一个参数RequireClaim
应该是claimType
:
public AuthorizationPolicyBuilder RequireClaim(string claimType, params string[] requiredValues);
如果你想限制client
role( http://schemas.microsoft.com/ws/2008/06/identity/claims/role
) 类型的值,策略将如下:
options.AddPolicy("RequireClientClaim", policy => policy.RequireClaim(ClaimTypes.Role, "Client"));
- 1 回答
- 0 关注
- 96 浏览
添加回答
举报
0/150
提交
取消