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

qkrwnstns52님의 프로필 이미지

작성한 질문수

스프링 시큐리티

5) DB 연동 인증 처리(2) : CustomAuthenticationProvider

안녕하세요. 현재 로그인한 사용자 정보 가져오는것에 대한 질문입니다.

작성

·

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

qkrwnstns52님의 프로필 이미지
qkrwnstns52
질문자

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

qkrwnstns52님의 프로필 이미지
qkrwnstns52
질문자

https://github.com/parkjunsun/practice_springSecurity 입니다

0

정수원님의 프로필 이미지
정수원
지식공유자

소스 공유 부탁드립니다