작성
·
249
0
@Override
public void configure(WebSecurity web) throws Exception {
//정적 리소스가 보안설정검사 없이
web
.ignoring()
.requestMatchers(PathRequest.toStaticResources().atCommonLocations())
;
}
위 코드는 강의에서 설정한 webIgnore 설정입니다. 이 설정 후 로그인을 성공시킨 후 보여지는 화면은 아래와 같습니다.
해상도가 좋지 않아 아래에 표기했습니다.
{"timestamp":"2022-11-15T08:08:46.990+0000","status":999,"error":"None","message":"No message available"}
검색을 해보니 webIgnore설정에
.antMatchers("/favicon.ico", "/resources/**", "/error")
를 추가하라고 하여 조치를 했더니
@Override
public void configure(WebSecurity web) throws Exception {
//정적 리소스가 보안설정검사 없이
web
.ignoring()
.requestMatchers(PathRequest.toStaticResources().atCommonLocations())
.antMatchers("/favicon.ico", "/resources/**", "/error")
;
}
위 문제화면 없이 로그인성공 후 메인화면으로 잘 리다이렉트 되는 것을 확인했습니다.
위 문제화면 특징 :
최초 웹어플리케이션 구동 후 로그인 성공시 999에러가 발견됨
로그인이 안된 것은 아님. 999에러 화면에서 주소창에 localhost:8080/
으로 직접 접속해보면 top위치에 로그인 버튼이 로그아웃 버튼으로 변경됨
강의에서 알려주신 코드외에 위 경우처럼 추가적인 조치가 필요한지 궁금합니다.
문제가 발생하는 시점의 소스코드를 깃헙에 올렸습니다.
답변 1
1
네
최초 웹어플리케이션 구동 후 로그인 성공시 999 에러가 발견되는 부분은 다음과 같은 상황으로 이해하면 될 것 같습니다
로그인이 안된 상황에서 어떤 정적파일 혹은 시큐리티에서 필터링 되지 못한 일부 자원이 요청에 포함되어 접근할려고 할 때 해당 파일에 대한 인가 예외가 발생해서 /error 가 발생함
다시 로그인 페이지로 이동한 다음 정상적으로 로그인이 성공하긴 했는데 로그인이 성공하게 되면 로그인 이전의 경로가 캐시로 저장된 상태 즉 /error 경로로 다시 리다이렉트하기 때문에 로그인이 성공하더라도 /error 로 가게 됨
여기서 /error 자체도 접근 권한을 체크하기 때문에 아예 시큐리티가 필터링하지 못하도록 정적 파일에 포함해서 선언함
다만 위의 설명이 모든 상황에서의 경우는 아닐 수 있습니다.
그래서 위의 코드처럼 정적파일을 선언해 주시면 될 것 같습니다.
답변 감사합니다!