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를 보고 작성한 글입니다.