| | |
| | | package com.ycl.component; |
| | | |
| | | import com.ycl.entity.auth.AuthInfo; |
| | | import com.ycl.utils.JwtTokenUtil; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.util.Enumeration; |
| | | |
| | | /** |
| | | * JWT登录授权过滤器 |
| | |
| | | protected void doFilterInternal(HttpServletRequest request, |
| | | HttpServletResponse response, |
| | | FilterChain chain) throws ServletException, IOException { |
| | | System.out.println(request); |
| | | // Enumeration<String> headerNames = request.getHeaderNames(); |
| | | // while (headerNames.hasMoreElements()){ |
| | | // System.out.println(headerNames.nextElement()); |
| | | // } |
| | | String authHeader = request.getHeader(this.tokenHeader); |
| | | if (authHeader != null && authHeader.startsWith(this.tokenHead)) { |
| | | String authToken = authHeader.substring(this.tokenHead.length());// The part after "Bearer " |
| | | String username = jwtTokenUtil.getUserNameFromToken(authToken); |
| | | AuthInfo authInfo = jwtTokenUtil.parseToken(authToken); |
| | | String username = authInfo.getUsername(); |
| | | LOGGER.info("checking username:{}", username); |
| | | if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) { |
| | | UserDetails userDetails = this.userDetailsService.loadUserByUsername(username); |
| | | UserDetails userDetails = this.userDetailsService.loadUserByUsername(authInfo.getUsername()); |
| | | if (jwtTokenUtil.validateToken(authToken, userDetails)) { |
| | | UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); |
| | | authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); |