尝试在 .net 核心中授权 ClaimsIdentity

Trying to Authorize a ClaimsIdentity in .net core

我向我的控制器添加了一些代码,以使其授权所有用户:

[Authorize]
[Route("/api/{companyIdentifier}/My")]
public class MyController : ControllerBase
{

在自定义中间件应用程序中,我添加了以下构建 jwt 声明的逻辑。

   var validateTokenResult =handler.ValidateToken(tokenString, parameters,out outvariable);

                if (validateTokenResult.Identity != null)
                {
                    var identity = new ClaimsIdentity(validateTokenResult.Claims)
                    {
                        Label = "Middleware Bearer Auth"

                    };

                    context.User.AddIdentity(identity);

                }

我仍然收到 401 未经授权。调试时我可以看到添加身份后有 2 个身份。一个没有声明,第二个有多个声明并设置为 isAuthenticated:true。知道这里会发生什么。我猜第一个身份不应该被添加。

我注意到我的日志中有一些奇怪的东西:

2017-02-08 15:35:23.9356 Authorization was successful for user: (null).

我没有将身份添加到当前 httpcontext.user,而是将用户替换为通过令牌验证创建的新用户:

context.User = validateTokenResult;

这解决了我的问题。