작성
·
1.1K
0
7) 로그아웃 및 인증에 따른 화면 보안 처리 강의 입니다.
URL 이 위와 같은 상태에서 로그인 페이지로 이동해서 로그인을 하면 아래와 같은 메시지가 나타납니다.
http://localhost:8080/mypage 경로 상태에서 로그인 페이지로 이동해서 로그인하면 정상적으로 오류 메시지 없이 잘 되는데 서브 경로가 없는 상태에서 로그인을 하니까 문제가 있어요
세션에는 등록이 되고 로그인처리는 되었는데 마지막화면에서 오류메시지만 떠요.
답변 부탁드릴게요
로그인 이후 URL : http://localhost:8080/error
{"timestamp":"2023-03-10T01:58:06.693+00:00","status":999,"error":"None","message":"No message available"}
답변 1
1
네
최초 웹어플리케이션 구동 후 로그인 성공시 999 에러가 발견되는 부분은 다음과 같은 상황으로 이해하면 될 것 같습니다
로그인이 안된 상황에서 어떤 정적파일 혹은 시큐리티에서 필터링 되지 못한 일부 자원이 요청에 포함되어 접근할려고 할 때 해당 파일에 대한 인가 예외가 발생해서 /error 가 발생함
다시 로그인 페이지로 이동한 다음 정상적으로 로그인이 성공하긴 했는데 로그인이 성공하게 되면 로그인 이전의 경로가 캐시로 저장된 상태 즉 /error 경로로 다시 리다이렉트하기 때문에 로그인이 성공하더라도 /error 로 가게 됨
여기서 /error 자체도 접근 권한을 체크하기 때문에 아예 시큐리티가 필터링하지 못하도록 정적 파일에 포함해서 선언함
다만 위의 설명이 모든 상황에서의 경우는 아닐 수 있습니다.
그래서 다음과 같이 정적파일을 선언해 주시면 될 것 같습니다.
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return (web) -> web.ignoring()
.requestMatchers(PathRequest.toStaticResources().atCommonLocations())
.antMatchers("/favicon.ico", "/resources/**", "/error");
}