• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

(해결완료) UrlFilterInvocationSecurityMetadataSource 필터에서 디버깅이 잡히지 않습니다.

20.09.19 02:42 작성 조회수 358

0

깃헙소스코드를 참고하면서 data jpa 소스코드 작성하고

Account, Role, Resources 모두 정상적으로 데이터가 들어가는걸 확인했습니다

혹시 불필요한 클래스를 제가 만들어서 그런건가 싶습니다..

어디가 잘못된걸까요.. 코드 한번 봐주시면 감사하겠습니다 강사님!

https://github.com/KMSKang/basicsecurity

답변 2

·

답변을 작성해보세요.

0

몇시간째 뭐가 잘못된건지 도저히 못찾았는데..

제일 중요한 한가지였네요..

답변주셔서 정말로 감사합니다 강사님!!

0

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) 가 필요합니다.