试图在.net核心

时间:2017-02-08 20:12:23

标签: c# asp.net-core jwt claims-based-identity

我在控制器中添加了一些代码,以便它授权所有用户:

[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。不知道这里会发生什么。我猜不应该添加第一个身份。

1 个答案:

答案 0 :(得分:1)

我在日志中发现了一些奇怪的事情:

  

2017-02-08 15:35:23.9356用户授权成功:   (空)。

不是将标识添加到当前的httpcontext.user,而是将用户替换为由标记验证创建的新用户:

context.User = validateTokenResult;

这解决了我的问题。