|
|
|
|
@ -38,20 +38,24 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter
|
|
|
|
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
|
|
|
|
|
throws ServletException, IOException
|
|
|
|
|
{
|
|
|
|
|
// 匿名路径放行
|
|
|
|
|
// 匿名路径放行 默认拦截
|
|
|
|
|
boolean flag = true;
|
|
|
|
|
for (String anonymou : securityProperties.getAnonymous()) {
|
|
|
|
|
PathMatcher pm = new AntPathMatcher();
|
|
|
|
|
if (pm.matchStart(anonymou, request.getRequestURI())) {
|
|
|
|
|
chain.doFilter(request, response);
|
|
|
|
|
flag = false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
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);
|
|
|
|
|
if (flag) {
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|