一、该问题的重现步骤是什么?
1. 将gateway、auth、system做成镜像 上传至kubesphere,配置nginx 上传至kubesphere
2. 打开前端登录页面 登录后返回请求未授权。 F12 发现/bladw-system/menu/top-menu 等接口返回401
3.本地同样的jar 和 nginx 没有此问题 ,排查后发现kubesphere上的gateway 中AuthFilter.java 中JwttUtil.paresJWT(token) 返回为null,而tocken是有值的
二、你期待的结果是什么?实际看到的又是什么?
期待登录成功, 实际是报错401 返回到了登陆页
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
bladex 4.1.0
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
遇到一样的问题,经过定位
// 修改 Bladex-tool JwtUtil.class public static Claims parseJWT(String jsonWebToken) { try { SecretKey secretKey = Keys.hmacShaKeyFor(Base64.getDecoder().decode(getBase64Security())); return Jwts.parser() .verifyWith(secretKey) .build() .parseSignedClaims(jsonWebToken) .getPayload(); } catch (Exception ex) { ex.printStackTrace(); return null; } }
捕获异常,会提示
early by 36622 milliseconds before 2024-10-12T04:34:32.000Z. Current time: 2024-10-12T04:33:55.378Z. Allowed clock skew: 0 milliseconds
然后对比服务器时间发现不同步
同步时间后即解决
两个环境都连接到同一个nacos看看,然后线上的你多打印一个日志,把auth服务和system服务还有gateway服务的sign-key打印出来,看看是多少,看看是不是一样。再检查下服务器之间时间有没有同步。
同样的问题 +1
登出系统后【请求未授权】无法登入:反复点5次以上后又可以成功登入
系统代码发版后【请求未授权】无法登入:无论如何登入不了,但重复发版后又可以恢复正常(代码一模一样)
Gateway服务日志显示Token会传丢为空,但前端确定有传