httpContext.User.Identity.IsAuthenticated 总是为fasle
验证一直通不过,不知道问题在哪里。这个坑应该只有我自己遇到,记录一下,问题在使用swagger验证的时候出现的(说的很轻松)
如图所示,在swaager文档中,添加认证功能,此时只要我们填下登陆时获取的token,便能访问到其他接口。如下图填写密钥
如果密钥没有填对,则对接口有认证的地方进行校验,效验失败则返回如下
刚开始不知道验证失败的原因在哪里。一直在查阅认证与授权的资料。
尝试了其他项目,发现都是正常的。(此时头有点大,但不能放弃)
最后使用了postMan进行调用,发现ok啊。此时联想到swagger密钥填写问题。一切ok。
填写格式:
Bearer 密钥
我之前填的是Bearer:密钥
其他注意事项
-
在登陆过程中时候,即使调用了HttpContext.SignInAsync() 方法,通过调试httpContext.AuthenticateAsync() 是获取不到用户登陆任何信息的。必须经历一个完整的页面请求过程。不然也是返回false。
-
Configrue必须添加 app.UseAuthentication(); 不然也总是返回false。