为什么 java 字符串方法返回 null 作为字符串?



这发生在使用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并且始终给出 true。当仅将其更改为!jwt.equals("null")时,它按预期工作。 据此,getJwt 方法总是返回一个字符串对象,即使它是空的。如何解释这一点?有没有办法返回空值而不是"空"?

实际上,调试时有一些错误导致以这种方式产生此问题。 对于登录/登录请求,前端应用程序已将带有身份验证标头的用户凭据作为Bearer null传递。然后,getJwt方法将切片字符串"null"返回给另一个方法。它从未在return null行中执行过。

相关内容

  • 没有找到相关文章

最新更新