30. JWT Authorization Filter - Part 2 (#2)
This commit is contained in:
@ -5,6 +5,8 @@ import net.shyshkin.study.fullstack.supportportal.backend.constant.SecurityConst
|
||||
import net.shyshkin.study.fullstack.supportportal.backend.utility.JwtTokenProvider;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.filter.OncePerRequestFilter;
|
||||
|
||||
import javax.servlet.FilterChain;
|
||||
@ -13,6 +15,7 @@ import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class JwtAuthorizationFilter extends OncePerRequestFilter {
|
||||
|
||||
@ -23,7 +26,15 @@ public class JwtAuthorizationFilter extends OncePerRequestFilter {
|
||||
if (!request.getMethod().equalsIgnoreCase(HttpMethod.OPTIONS.name())) {
|
||||
String authHeader = request.getHeader(HttpHeaders.AUTHORIZATION);
|
||||
if (authHeader != null && authHeader.startsWith(SecurityConstants.TOKEN_PREFIX)) {
|
||||
|
||||
String token = authHeader.replace(SecurityConstants.TOKEN_PREFIX, "").trim();
|
||||
String username = jwtTokenProvider.getSubject(token);
|
||||
if (jwtTokenProvider.isTokenValid(username, token)) {
|
||||
var authorities = jwtTokenProvider.getAuthorities(token);
|
||||
var authentication = jwtTokenProvider.getAuthentication(username, authorities, request);
|
||||
SecurityContextHolder.getContext().setAuthentication(authentication);
|
||||
} else {
|
||||
SecurityContextHolder.clearContext();
|
||||
}
|
||||
}
|
||||
}
|
||||
filterChain.doFilter(request, response);
|
||||
|
||||
Reference in New Issue
Block a user