티스토리 뷰
프로그래밍/Spring
[Spring Security] 필터 추가시 " does not have a registered order and cannot be added without a specified order." 오류 발생 해결법
rlawlstjd007 2021. 3. 11. 15:43들어가며
- Spring Secutiry를 사용하면서 Custom Filter 를 만들고 Cofiguration에 추가를 해주었는데 아래와 같은 에러가 발생하였다.
- 사실 해결방법은 메시지에 있긴 하다 ..
- 그렇지만 원인을 알고 싶었기에
Caused by: java.lang.IllegalArgumentException:
The Filter class JwtAuthenticationFilter does not have a registered order and cannot be added without a specified order.
Consider using addFilterBefore or addFilterAfter instead.
원인
- 필자의 경우에는 GenericFilterBean을 확장하여 Custom Filter를 정의하고 Security Config에 추가 해줬다.
public class JwtAuthenticationFilter extends GenericFilterBean {
// 생략 ..
}
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
Filter authenticationFilter = new JwtAuthenticationFilter();
http
.csrf().disable()
.addFilter(authenticationFilter);
}
}
- 문제는
addFilter()
이다. - Document를 보면 아주 명확하게 쓰여 있다.
addFilter() 메서드를 사용하기 위해서는 반드시 Spring Security Framework 에서 제공되는 필터 혹은 이를 확장한 객체이어야 한다.
- 참고로 JavaDoc에서도 명시해주지만 'Spring Security 에서 제공하는 Filter 클래스' 들은 아래와 같다.
- 실제 코드를 보면 더 명확하게 알 수 있다.
- addFilter()의 메소드 내부를 보면
comparator.isRegistered(filterClass)
를 통해서 등록되어 있는 필터인지 확인한다.- 만약 아니라면 예외를 던진다.
해결방법
- Spring Security 에서 제공되는 Filter클래스를 구현하거나
- 다른 방법으로는
addFilterBefore()
,addFilterAfter()
를 사용하면 된다,
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
Filter authenticationFilter = new JwtAuthenticationFilter();
http
.csrf().disable()
.addFilterBefore(authenticationFilter, UsernamePasswordAuthenticationFilter.class);
}
}
반응형
'프로그래밍 > Spring' 카테고리의 다른 글
[Spring Boot] Output Capture 기능으로 콘솔 출력 값 가져오기 (0) | 2020.08.11 |
---|---|
[SpringBoot] WebServer Port 설정 방법 (0) | 2020.04.11 |
[SpringBoot] Logging Level 설정 방법 (0) | 2020.04.11 |
[Spring Boot] WebSocket STOMP 사용시 BroadCast 메시지 전달 방법 (0) | 2020.04.11 |
[SpringBoot] Jackson 사용시 Could not write JSON: No serializer found for class.. 오류 발생 해결법 (0) | 2020.04.08 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 이펙티브 자바
- effective java
- springboot
- Java UI
- JavaFX 종료
- 일본 자전거 여행
- windows
- 인텔리제이
- 자전거 여행
- 스프링부트
- 방통대 과제물
- java
- intelij
- JavaFX Table View
- 일본 배낭여행
- TableView
- JavaFX Window Close
- 일본 여행
- JavaFX
- 이펙티브
- 배낭여행
- 자전거
- 일본여행
- 텐트
- 배낭 여행
- 자바
- git
- JavaFX 테이블뷰
- effectivejava
- 이펙티브자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함