我在控制器中添加了一些代码,以便它授权所有用户:
[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。不知道这里会发生什么。我猜不应该添加第一个身份。
答案 0 :(得分:1)
我在日志中发现了一些奇怪的事情:
2017-02-08 15:35:23.9356用户授权成功: (空)。
不是将标识添加到当前的httpcontext.user,而是将用户替换为由标记验证创建的新用户:
context.User = validateTokenResult;
这解决了我的问题。