【问题标题】:Trying to Authorize a ClaimsIdentity in .net core尝试在 .net 核心中授权 ClaimsIdentity
【发布时间】:2017-06-26 15:19:11
【问题描述】:

我在我的控制器中添加了一些代码来授权所有用户:

[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 Unauthorized。调试时我可以看到添加身份后有2个身份。一个没有声明,第二个有多个声明并设置为 isAuthenticated:true。知道这里会发生什么。我猜不应该添加第一个身份。

【问题讨论】:

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


    【解决方案1】:

    我在日志中发现了一些奇怪的东西:

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

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

    context.User = validateTokenResult;

    这解决了我的问题。

    【讨论】:

      猜你喜欢
      • 2018-07-31
      • 1970-01-01
      • 2020-02-16
      • 2018-03-13
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      相关资源
      最近更新 更多