-
카테고리
-
세부 분야
백엔드
-
해결 여부
해결됨
(해결완료) UrlFilterInvocationSecurityMetadataSource 필터에서 디버깅이 잡히지 않습니다.
20.09.19 02:42 작성 조회수 358
0
깃헙소스코드를 참고하면서 data jpa 소스코드 작성하고
Account, Role, Resources 모두 정상적으로 데이터가 들어가는걸 확인했습니다
혹시 불필요한 클래스를 제가 만들어서 그런건가 싶습니다..
어디가 잘못된걸까요.. 코드 한번 봐주시면 감사하겠습니다 강사님!
https://github.com/KMSKang/basicsecurity
답변을 작성해보세요.
0
0
정수원
지식공유자2020.09.20
SecurityConfig.java 에서
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.loginProcessingUrl("/login_proc")
.authenticationDetailsSource(authenticationDetailsSource)
.successHandler(customAuthenticationSuccessHandler)
.failureHandler(customAuthenticationFailureHandler)
.permitAll()
.and()
.exceptionHandling()
.authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/login"))
.accessDeniedPage("/denied")
.accessDeniedHandler(accessDeniedHandler())
.and()
.addFilterBefore(customFilterSecurityInterceptor(), FilterSecurityInterceptor.class)
;
맨 마지막에
.addFilterBefore(customFilterSecurityInterceptor(), FilterSecurityInterceptor.class)
를 추가해 주시면 될 것 같습니다.
@Bean
public FilterSecurityInterceptor customFilterSecurityInterceptor() throws Exception {
FilterSecurityInterceptor filterSecurityInterceptor = new FilterSecurityInterceptor();
filterSecurityInterceptor.setSecurityMetadataSource(urlFilterInvocationSecurityMetadataSource());
filterSecurityInterceptor.setAccessDecisionManager(affirmativeBased());
filterSecurityInterceptor.setAuthenticationManager(authenticationManagerBean());
return filterSecurityInterceptor;
}
FilterSecurityInterceptor 는 기본적으로 ExpressionBasedFilterInvocationSecurityMetadataSource 를 사용하고 있는데 이 부분을 DB 와 연동해서 처리하는 urlFilterInvocationSecurityMetadataSource 로 대체되도록 customFilterSecurityInterceptor 클래스를 새롭게 생성했는데 이 필터 클래스를 FilterChainProxy 에서 관리되도록 설정에 추가해야 합니다.
즉 http.addFilterBefore(customFilterSecurityInterceptor(), FilterSecurityInterceptor.class) 가 필요합니다.
답변 2