Advertisement
Guest User

JwtRequestFilter

a guest
Jan 3rd, 2021
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.54 KB | None | 0 0
  1. package ru.gurzhiy.springsecurityjwt.filters;
  2.  
  3.  
  4. import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
  5. import org.springframework.security.core.context.SecurityContextHolder;
  6. import org.springframework.security.core.userdetails.UserDetails;
  7. import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
  8. import org.springframework.stereotype.Component;
  9. import org.springframework.web.filter.OncePerRequestFilter;
  10. import ru.gurzhiy.springsecurityjwt.service.MyUserDetailsService;
  11. import ru.gurzhiy.springsecurityjwt.utl.JwtUtil;
  12.  
  13. import javax.servlet.FilterChain;
  14. import javax.servlet.ServletException;
  15. import javax.servlet.http.HttpServletRequest;
  16. import javax.servlet.http.HttpServletResponse;
  17. import java.io.IOException;
  18.  
  19. /***
  20.  * intercept every request just once and then examine the header
  21.  */
  22. @Component
  23. public class JwtRequestFilter extends OncePerRequestFilter {
  24.  
  25.  
  26.      private final MyUserDetailsService myUserDetailsService;
  27.      private final JwtUtil jwtUtil;
  28.  
  29.     public JwtRequestFilter(MyUserDetailsService myUserDetailsService, JwtUtil jwtUtil) {
  30.         this.myUserDetailsService = myUserDetailsService;
  31.         this.jwtUtil = jwtUtil;
  32.     }
  33.  
  34.     @Override
  35.     protected void doFilterInternal(HttpServletRequest request,
  36.                                     HttpServletResponse response,
  37.                                     FilterChain filterChain) throws ServletException, IOException {
  38.        
  39.         String authorizationHeader = request.getHeader("Authorization");
  40.         String username = null;
  41.         String jwt = null;
  42.  
  43.         if (authorizationHeader != null && authorizationHeader.startsWith("Bearer")){
  44.            
  45.             jwt = authorizationHeader.substring(7);
  46.             username = jwtUtil.extractUsername(jwt);
  47.         }
  48.  
  49.         if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) {
  50.          
  51.             UserDetails userDetails = this.myUserDetailsService.loadUserByUsername(username);
  52.             if (jwtUtil.validateToken(jwt, userDetails)){
  53.  
  54.                 UsernamePasswordAuthenticationToken namePassAuthToken = new UsernamePasswordAuthenticationToken(
  55.                  userDetails, null, userDetails.getAuthorities());
  56.                 namePassAuthToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
  57.                 SecurityContextHolder.getContext().setAuthentication(namePassAuthToken);
  58.             }
  59.  
  60.             filterChain.doFilter(request, response);
  61.         }
  62.  
  63.  
  64.     }
  65. }
  66.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement