[코드로 배우는 스프링부트] - 구멍가게 코딩단
기준
plugins {
id 'org.springframework.boot' version '2.4.4'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'com.adarshr.test-logger' version '2.1.1'
id 'java'
id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}
ClubLoginSuccesshandler로 로그인 성공후 AuthenticationSuccessHandler에서 redirect하는 부분.
ClubAuthMemberDTO authMember = (ClubAuthMemberDTO) authentication.getPrincipal();
authMember.getPassword() // null
getPassword하는 부분에서 null이 발생합니다.
google 검색을 해보고, 소스코드 디버깅을 해보니
User class 내부의 eraseCredentials 함수가 호출되어 getPassword()를 실행해도 null이 return되는 것 같습니다.
// User 클래스 내부
@Override public void eraseCredentials() {
this.password = null;
}
기본값이 true라서, 기본 spring 설정에서는 xml로 처리한다고 하는데...
<security:authentication-manager erase-credentials="false">
springboot에서는 AuthenticationManagerBuilder를 파라메터로 받는 configure 에서 세팅해줘야 한다고 하네요.
// SecurityConfig 클래스 내부
@Override protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(clubUserDetailsService);
auth.eraseCredentials(false);
}
그런데, 위와 같이 하면, 임의로 만들었던 ClubUserDetailsService를 사용할 수 없어서 위와 같이 추가로 service를 주입했습니다.
'Java > Spring' 카테고리의 다른 글
java.lang.IllegalAccessException: Class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor can not access a member of class org.example.entity.BaseEntity with modifiers "public" (0) | 2021.05.09 |
---|---|
[security] 정리 (0) | 2021.05.06 |
[Spring data JPA] 조회: Entity + 연관 Entity(LAZY) + Pageable (0) | 2021.04.24 |
[Spring data JPA] native query + XML + DTO (0) | 2021.04.24 |
JPA 씹어먹기 (0) | 2021.04.19 |