这发生在使用Java版本1.8(java8)的spring-boot应用程序中。在Java 14的普通控制台应用程序中,它运行良好。
我有两个与JWT过滤类相关的方法,该类由“ OncePerRequestFilter”类扩展。
private String getJwt(HttpServletRequest request) {
String authHeader = request.getHeader("Authorization");
if (authHeader != null && authHeader.startsWith("Bearer ")) {
return authHeader.replace("Bearer ", "");
}
return null;
}
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
try {
String jwt = getJwt(request);
if (!jwt.equals("null") && okenProvider.validateJwtToken(jwt)) {
.....
.....
}
} catch (Exception e) {
....
}
filterChain.doFilter(request, response);
}
预期的jwt变量值为令牌或空对象。用于检查以前使用过的jwt != null
,并且始终为真。仅将其更改为时,它按预期工作!jwt.equals("null")
。据此,getJwt方法始终返回String对象,即使它为null。如何解释呢?有没有办法返回空值而不是“ null”?
实际上,调试时会出现一些错误,从而导致以这种方式产生此问题。对于登录/登录请求,前端应用程序已通过身份验证标头为的用户凭证传递Bearer null
。然后,将getJwt方法返回给另一个方法的切片字符串“ null”。它从未执行过return null
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句