JwtBearer在服务器环境一段时间后就无法验证了,即使重新获取Token的也不能验证。

weixin_38048892 2019-06-21 09:58:04
asp.net core api 项目(版本2.2),因为是老系统,系统先前一套自定义的身份验证方式,DefaultAuthenticateScheme 和 DefaultChallengeScheme 都为 “Custom”。 自定义身份验证方案类似于这种: https://github.com/ignas-sakalauskas/CustomAuthenticationNetCore20/tree/master/CustomAuthNetCore20/Authentication 但也有略微不同,总之就是,原先的验证方式有点类型说Session这种,如果用户一段时间不访问就会失效,需要一直客户端一直要向服务器端发送心跳连接,保持登录状态。 后来,因为API接口需要为微信端(其实就是几个移动端页面)提供服务,就另外引用了JwtBearer授权方式。 Token 发放没有使用IdentityServer4,就是简单的用用户名和密码换取一个Token,也没有让Token过期的操作。 发放Token代码如下 ConfigureServices 配置如下 api方法授权如下 现在遇到一个问题,在本地调试环境,工作一切正常。但在服务器环境中。Token只有在重启系统开始后的2分钟左右能验证成功,后面就一直验证不成功,新获取的Token也不能验证。 我把日志记录等级调到最低了,使用AddJwtBearer (Microsoft.AspNetCore.Authentication.JwtBearer)验证也没有打印到任何错误或验证不通过的信息。而且可以明确看到,请求的目标方法已经显示指定了 [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] 应该和原来的自定义方法无关了,但好像从结果看,它好像还是受自定义的(Custom)的,而且,日志也打印了Custom验证失败的信息。
...全文
227 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38058748 2019-06-21
  • 打赏
  • 举报
回复
是不是你在http请求里放的token不对呀,建议在验证token的地方写日志打印token出来检查下。

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧