CoolFace
Apppublic

sakthivikram/geo-location

sourceHugging Faceupdated 5mo agoView on Hugging Face
0likes
JwtAuthenticationFilter.java69 linesDownload Raw Back to security
1package com.georeport.security;2 3import jakarta.servlet.FilterChain;4import jakarta.servlet.ServletException;5import jakarta.servlet.http.HttpServletRequest;6import jakarta.servlet.http.HttpServletResponse;7import org.springframework.beans.factory.annotation.Autowired;8import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;9import org.springframework.security.core.context.SecurityContextHolder;10import org.springframework.security.core.userdetails.UserDetails;11import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;12import org.springframework.stereotype.Component;13import org.springframework.util.StringUtils;14import org.springframework.web.filter.OncePerRequestFilter;15 16import java.io.IOException;17 18/**19 * JWT Authentication Filter.20 * Intercepts each request to validate JWT token and set authentication.21 */22@Component23public class JwtAuthenticationFilter extends OncePerRequestFilter {24 25    @Autowired26    private JwtTokenProvider tokenProvider;27 28    @Autowired29    private CustomUserDetailsService userDetailsService;30 31    @Override32    protected void doFilterInternal(HttpServletRequest request,33            HttpServletResponse response,34            FilterChain filterChain) throws ServletException, IOException {35        try {36            String jwt = getJwtFromRequest(request);37 38            if (StringUtils.hasText(jwt) && tokenProvider.validateToken(jwt)) {39                String email = tokenProvider.getEmailFromToken(jwt);40 41                UserDetails userDetails = userDetailsService.loadUserByUsername(email);42 43                UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(44                        userDetails,45                        null,46                        userDetails.getAuthorities());47 48                authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));49                SecurityContextHolder.getContext().setAuthentication(authentication);50            }51        } catch (Exception ex) {52            logger.error("Could not set user authentication in security context", ex);53        }54 55        filterChain.doFilter(request, response);56    }57 58    /**59     * Extract JWT token from Authorization header60     */61    private String getJwtFromRequest(HttpServletRequest request) {62        String bearerToken = request.getHeader("Authorization");63        if (StringUtils.hasText(bearerToken) && bearerToken.startsWith("Bearer ")) {64            return bearerToken.substring(7);65        }66        return null;67    }68}69