작성
·
275
0
@GetMapping("/mypage")
public String myPage(Model model, Authentication authentication) throws Exception {
AccountContext ac = (AccountContext) authentication.getPrincipal();
model.addAttribute("info", ac.getUsername());
return "user/mypage";
}
바로 전 강의에서는 이 코드가 정상적으로 실행 됐는데,
이번 강의에서 추가적인 작업을 한 뒤에는 error page가 나옵니다..
혹시 이유와 어떻게 고쳐야하는지 알 수 있을까요???
답변 4
0
json이 출력돼는 에러는 해결되었습니다. CustomauthenticationProvider을 사용하는 경우에는 여전히 controller에서 사용자 정보를 가져오질 못하네요.... 찾아보니깐 제약이 있다는거같은데 찾아서 공부해 보겠습니다. 감사합니다
0
{
"timestamp" : 1586002411175,
"status" : 999,
"error" : "None",
"message" : "No message available"
}
구글에서 검색해 보면 이 에러 메시지에 대한 이슈가 많이 나오고 있습니다.
처음 로그인 인증 후 /error 페이지로 이동하는데 다시 로그인을 시도하거나 로그인 이후 해당 페이지로 가면 저 현상이 없어집니다
그리고 일정 시간이 지난 후에 다시 로그인을 하게 되면 동일한 현상이 발생합니다.
스프링 시큐리티에서는 정적 자원에 대해서 보안을 적용하지 않도록 api 를 제공하고 있는데
CSS(new String[]{"/css/**"}),
JAVA_SCRIPT(new String[]{"/js/**"}),
IMAGES(new String[]{"/images/**"}),
WEB_JARS(new String[]{"/webjars/**"}),
FAVICON(new String[]{"/**/favicon.ico"});
이렇게 다섯가지로 설정이 되어 있습니다.
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().requestMatchers(PathRequest.toStaticResources().atCommonLocations());
}
이렇게 설정하게 되면 자동적으로 위 다섯가지의 정적자원에 대해서 보안이 적용하지 않게 됩니다.
이슈에 대한 여러 답변들 중에 static 폴더안에 위의 폴더가 모두 생성되지 않을 경우 에러가 날 수 있다고 합니다.
폴더를 모두 생성해 보시고 시도해 보시기 바랍니다.
다른 답변으로는
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/")
.loginProcessingUrl("/login_proc")
.permitAll();
에서
.defaultSuccessUrl("/")
을
.defaultSuccessUrl("/", true)
로 변경하는 것입니다.
그러면 로그인 후 항상 "/" 로 이동하는 것인데 개인적으로는 그렇게 추천할 사항은 아닙니다.
설정에서 다음과 같이 추가해 줘도 되는 것 같습니다.
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration
제가 개인적으로 판단할 때는 정적자원과 관련되어 발생하는 오류인것으로 짐작하고 있습니다.
항상 발생하는 것은 아니고 어떤 특정한 상황에서 발생하는 것 같습니다.
0
0