시큐리티 로그인 후
- 작성자 :
- 유*도
- 작성일 :
- 2014-06-27 18:03:07
- 조회수 :
- 800
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
안녕하세요
시큐리티를 적용하여 로그인을 하는데 로그인 후 메서드 호출하는 부분에서 오류가 발생합니다.
로그인후 메서드에서
LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
이렇게 호출하여 인증된 사용자객체를 VO형식으로 가져오는데
getAuthenticatedUser 메서드에서
if(principal instanceof EgovUserDetails) 이렇게 객체타입을 비교하는 부분이 있는데 여기서 false가 나서
사용자 객체를 가져오지 못 합니다.
여기서 principal 는 roleAnonymous라고 나옵니다.
답변 부탁드립니다.
시큐리티를 적용하여 로그인을 하는데 로그인 후 메서드 호출하는 부분에서 오류가 발생합니다.
로그인후 메서드에서
LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
이렇게 호출하여 인증된 사용자객체를 VO형식으로 가져오는데
getAuthenticatedUser 메서드에서
if(principal instanceof EgovUserDetails) 이렇게 객체타입을 비교하는 부분이 있는데 여기서 false가 나서
사용자 객체를 가져오지 못 합니다.
여기서 principal 는 roleAnonymous라고 나옵니다.
답변 부탁드립니다.
A
안녕하세요. 유상도님.
인증이 정상적으로 처리되지 않은 경우에, authentication.getPrincipal()의 리턴이 EgovUserDetails가 아닌 경우가 발생합니다.
이런 경우 principal에 대한 정확한 타입에 조건 처리를 추가로 지정하시면 되실 것 같습니다.
또는 Spring Security 2.X 버전에서는 authentication.getName()가 "roleAnonymous"를 리턴하기 때문에 이 조건으로 인증 여부를 사전에 판단하실 수 있습니다.
추가적으로 인증이 된 이후에 roleAnonymous로 리턴되는 경우에는 해당 사용자에게 실제 권한이 부여되지 않은 경우인 것 같습니다.
이 부분도 사용자 등록 시 ROLE_ANONYMOUS가 아닌 ROLE_USER 등의 권한을 부여 하셔야 하구요.
그럼, 즐거운 하루되십시오.
감사합니다.
인증이 정상적으로 처리되지 않은 경우에, authentication.getPrincipal()의 리턴이 EgovUserDetails가 아닌 경우가 발생합니다.
이런 경우 principal에 대한 정확한 타입에 조건 처리를 추가로 지정하시면 되실 것 같습니다.
또는 Spring Security 2.X 버전에서는 authentication.getName()가 "roleAnonymous"를 리턴하기 때문에 이 조건으로 인증 여부를 사전에 판단하실 수 있습니다.
추가적으로 인증이 된 이후에 roleAnonymous로 리턴되는 경우에는 해당 사용자에게 실제 권한이 부여되지 않은 경우인 것 같습니다.
이 부분도 사용자 등록 시 ROLE_ANONYMOUS가 아닌 ROLE_USER 등의 권한을 부여 하셔야 하구요.
그럼, 즐거운 하루되십시오.
감사합니다.