RequireClaim 和 RequireAuthenticatedUser 策略不起作用

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 中用户的下一个请求中看到此声明:

http://img3.mukewang.com/64aa72830001a0ff12330179.jpg

“AllAuthenticated”允许每个人:)所以我猜这里有些东西很糟糕。


    [HttpPost, Route("refresh")]

    [Authorize(Policy = "AllAuthenticated")]

    public async Task<IActionResult> ActionName(){}

我没有在过滤器中放置任何策略,因为我的策略并不打算应用于所有控制器和操作。启动.cs


largeQ
浏览 97回答 1
1回答

精慕HU

第一个参数RequireClaim应该是claimType:public&nbsp;AuthorizationPolicyBuilder&nbsp;RequireClaim(string&nbsp;claimType,&nbsp;params&nbsp;string[]&nbsp;requiredValues);如果你想限制clientrole(&nbsp;http://schemas.microsoft.com/ws/2008/06/identity/claims/role) 类型的值,策略将如下:options.AddPolicy("RequireClientClaim",&nbsp;policy&nbsp;=>&nbsp;policy.RequireClaim(ClaimTypes.Role,&nbsp;"Client"));
打开App,查看更多内容
随时随地看视频慕课网APP