Spring
[Spring] Spring Security(스프링 시큐리티) 익명사용자 인증 : AnonymousAuthenticationFilter
DAHLIA CHOI
2023. 11. 4. 15:04
- isAnonymous() : 로그인할 때 사용
- isAuthenticated() : 로그아웃할 때 사용
스프링에서 재공하는 AnonymousAuthenticaitonFilter를 보면
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
if (SecurityContextHolder.getContext().getAuthentication() == null) {
Authentication authentication = createAuthentication((HttpServletRequest) req);
SecurityContext context = SecurityContextHolder.createEmptyContext();
context.setAuthentication(authentication);
SecurityContextHolder.setContext(context);
if (this.logger.isTraceEnabled()) {
this.logger.trace(LogMessage.of(() -> "Set SecurityContextHolder to "
+ SecurityContextHolder.getContext().getAuthentication()));
}
else {
this.logger.debug("Set SecurityContextHolder to anonymous SecurityContext");
}
}
else {
if (this.logger.isTraceEnabled()) {
this.logger.trace(LogMessage.of(() -> "Did not set SecurityContextHolder since already authenticated "
+ SecurityContextHolder.getContext().getAuthentication()));
}
}
chain.doFilter(req, res);
}
해당 필터에서 일단 securityContext에 인증 객체가 있는지 확인하고 나서 없으면 chain.doFilter로 이동하는 것을 볼 수 있다!
해당 글은 인프런의 스프링시큐리티-Spring Boot 기반으로 개발하는 Spring Security를 보고 작성한 글입니다.