강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

강프로그래머님의 프로필 이미지
강프로그래머

작성한 질문수

스프링 시큐리티

5) 웹 기반 인가처리 DB 연동 - FilterInvocationSecurityMetadataSource (2)

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

해결된 질문

작성

·

493

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

강프로그래머님의 프로필 이미지
강프로그래머

작성한 질문수

질문하기