这个方法中 @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { LoginUser loginUser = tokenService.getLoginUser(request); if (StringUtils.isNotNull(loginUser) && StringUtils.isNull(SecurityUtils.getAuthentication())) { tokenService.verifyToken(loginUser); UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities()); authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); SecurityContextHolder.getContext().setAuthentication(authenticationToken); } chain.doFilter(request, response); }
if (StringUtils.isNotNull(loginUser) && StringUtils.isNull(SecurityUtils.getAuthentication()))不太明白,当前用户未登录,当前用户登录token过期了,当前用户登录token没过期,这三种情况下这个if成立吗?
另外token自动续期在哪里实现的?
header
中都不一定有token
,getLoginUser(request)
压根解析不出来,返回null。getLoginUser(request)
虽然能解析出token
,但是在redis
缓存中却查不出来,也是返回null。getLoginUser(request)
能返回出用户信息,然后后续再走 tokenService.verifyToken(loginUser)
,可能会触发refreshToken(loginUser)
来实现token自动续期。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
登录 后才可以发表评论