728x90
- DSL : 도메인 특화 언어(시큐리티에서 특정 도메인을 접근할 수 있도록 제공한다)
- Custom DSLs
- AbstractHttpConfigurer
- 스프링 시큐리티 초기화 설정 클래스
- 필터, 핸들러, 메서드, 속성 등을 한 곳에 정의하여 처리할 수 있는 편리함 제공
- public void init(H http) throws Exception - 초기화
- public void configure(H http) – 설정
- HttpSecurity 의 apply(C configurer) 메서드 사용
- AbstractHttpConfigurer
- 이전 코드

해당 방식으로 필터를 만들었다. 
여러 설정들의 AjaxLoginConfigurer에서 한다
-
public class AjaxLoginConfigurer<H extends HttpSecurityBuilder<H>> extends AbstractAuthenticationFilterConfigurer<H, AjaxLoginConfigurer<H>, AjaxLoginProcessingFilter> { private AuthenticationSuccessHandler successHandler; private AuthenticationFailureHandler failureHandler; private AuthenticationManager authenticationManager; public AjaxLoginConfigurer() { super(new AjaxLoginProcessingFilter(), null); } @Override public void init(H http) throws Exception { //필터를 생성해서 부모 클래스에 전달 super.init(http); } @Override public void configure(H http) { //Configure 설정을 모두 이 클래스에서 동작시킬수 있다. if(authenticationManager == null){ //공유객체를 저장하고 가지고 오는 api authenticationManager = http.getSharedObject(AuthenticationManager.class); } getAuthenticationFilter().setAuthenticationManager(authenticationManager); getAuthenticationFilter().setAuthenticationSuccessHandler(successHandler); getAuthenticationFilter().setAuthenticationFailureHandler(failureHandler); SessionAuthenticationStrategy sessionAuthenticationStrategy = http .getSharedObject(SessionAuthenticationStrategy.class); if (sessionAuthenticationStrategy != null) { getAuthenticationFilter().setSessionAuthenticationStrategy(sessionAuthenticationStrategy); } RememberMeServices rememberMeServices = http .getSharedObject(RememberMeServices.class); if (rememberMeServices != null) { getAuthenticationFilter().setRememberMeServices(rememberMeServices); } http.setSharedObject(AjaxLoginProcessingFilter.class,getAuthenticationFilter()); http.addFilterBefore(getAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class); } public AjaxLoginConfigurer<H> successHandlerAjax(AuthenticationSuccessHandler successHandler) { this.successHandler = successHandler; return this; } public AjaxLoginConfigurer<H> failureHandlerAjax(AuthenticationFailureHandler authenticationFailureHandler) { this.failureHandler = authenticationFailureHandler; return this; } public AjaxLoginConfigurer<H> setAuthenticationManager(AuthenticationManager authenticationManager) { this.authenticationManager = authenticationManager; return this; } @Override protected RequestMatcher createLoginProcessingUrlMatcher(String loginProcessingUrl) { return new AntPathRequestMatcher(loginProcessingUrl, "POST"); } }
728x90
'스프링 시큐리티 > 실전프로젝트 - 인증 프로세스 Ajax 인증 구현' 카테고리의 다른 글
| ch07. Ajax 로그인 구현 & CSRF 설정 (0) | 2022.01.21 |
|---|---|
| ch05. 인증 및 인가 예외 처리 - AjaxLoginUrlAuthenticationEntryPoint, AjaxAccessDeniedHandler (0) | 2022.01.21 |
| ch04. 인증 핸들러 - AjaxAuthenticationSuccessHandler, AjaxAuthenticationFailureHandler (0) | 2022.01.20 |
| ch03. 인증 처리자 - AjaxAuthenticationProvider (0) | 2022.01.20 |
| ch02. 인증 필터 - AjaxAuthenticationFilter (0) | 2022.01.20 |