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

최정식님의 프로필 이미지
최정식

작성한 질문수

스프링과 JPA 기반 웹 애플리케이션 개발

회원 가입 완료 후 자동 로그인

authentication관련 질문...

작성

·

274

·

수정됨

0

public void login(Account account) {
    System.out.println(account);
    UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(account.getNickname(),
            account.getPassword(), Collections.singleton(new SimpleGrantedAuthority("ROLE_USER")));
    SecurityContextHolder.getContext().setAuthentication(token);

}

우선 AccountService에 있는 login입니다.

제가 테스트를 하던 도중 나머지는 다 되는데 authetication부분에서 문제가 있는것을 발견했습니다. 단위테스트로 하다보니 권한이 부여가 되지 않아서 회원가입을 해도 다시 원상태로 복구되더군요 springsecurity6로 바뀌면서 새로 바뀐부분이 있길래 구글링해서 바꿀만큼 바꿔보고 찾을만큼 찾아봤다 생각했는데도

자꾸 권한부여 부분에서 문제가 생깁니다(위의 login함수)

이럴경우 어떻게 바꾸어야 할까요...?

 

저 위에

 SecurityContextHolder.getContext().setAuthentication(token);

라는 코드전에 토큰을 출력해 보니

UsernamePasswordAuthenticationToken [Principal=jungsik, Credentials=[PROTECTED], Authenticated=true, Details=null, Granted Authorities=[ROLE_USER]]

이렇듯 AUtheticated는 true로 반환되는데

redirect될때는 권한이 사라지는것 같습니다

답변 2

0

백기선님의 프로필 이미지
백기선
지식공유자

고생하셨군요.

redirect는 죄가 없습니다. "/" 이쪽으로 보낸게 문제입니다. "/" 이 URL 자체가 권한 확인하지 않겠다고 설정한 URL이라서 그렇습니다.

https://www.inflearn.com/questions/1300000/%ED%9A%8C%EC%9B%90%EA%B0%80%EC%9E%85-%EC%84%B1%EA%B3%B5-%ED%9B%84-redirect%EC%9D%B4%EB%8F%99%EC%8B%9C-%EA%B6%8C%ED%95%9C-%EC%A7%88%EB%AC%B8

여기에도 답글을 달아놨으니 확인해 주세요.

0

최정식님의 프로필 이미지
최정식
질문자

자문자답합니다...

컨트롤러에서 반환할때 "redirect:/" 이렇게 반환을 할 경우

인증이 초기화가 되는듯하군요

"/index" 로 하니까 인증이 유지됩니다...

감사합니다 저도 같은 문제를 겪어서ㅠ.. 진짜 엄청 고생했어요ㅠ 덕분에 일단 다음 진도로 넘어갈꺼 같습니다ㅠ 복받으세요🙏

최정식님의 프로필 이미지
최정식
질문자

근데 저런식으로 로그인하는건 이제 아예 호환이 안되어서 http상태와 세션유지정보까지 같이넘겨주는 방식으로 한번 더 변경해야합니다...아무튼 도움이 됐다니 다행이네요

최정식님의 프로필 이미지
최정식

작성한 질문수

질문하기