강의

멘토링

커뮤니티

Inflearn Community Q&A

c50707345634's profile image
c50707345634

asked

Developing Spring and JPA based web applications

Automatic login after sign-up

authentication관련 질문...

Written on

·

469

·

Edited

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될때는 권한이 사라지는것 같습니다

javaspringspring-bootjpathymeleaf

Answer 2

0

whiteship님의 프로필 이미지
whiteship
Instructor

고생하셨군요.

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

c50707345634님의 프로필 이미지
c50707345634
Questioner

자문자답합니다...

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

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

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

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

c50707345634님의 프로필 이미지
c50707345634
Questioner

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

c50707345634's profile image
c50707345634

asked

Ask a question