[Spring Security] loadUserByUsername(String username)에서 username...
[Spring Security] loadUserByUsername(String username)에서 username...
[Spring Security] loadUserByUsername(String username)에서 username이 empty일 때
스프링 시큐리티를 이용해서 로그인을 하는데
public class MemberDetailsService implements UserDetailsService {
public final MemberService memberService ;
@Override
@Transactional ( readOnly = true )
public UserDetails loadUserByUsername (String email) throws UsernameNotFoundException {
loadUserByUsername 메소드의 파라미터 email의 값이 넘어오질 않았다.
바로 구글에 loaduserbyusername username empty를 치니까 역시나 나같은 사람들이 많았고
https://stackoverflow.com/questions/43978548/username-parameter-is-empty-in-loaduserbyusernamestring-username-spring-boot
여기에 해답이 있었다.
문제는 로그인 폼에서 name을 email로 해줬었는데 email이 아니라 username으로 해줘야 제대로 전달된다.
하지만 나는 이름을 계속 email로 하고 싶었고 방법은
@Override
public void configure (HttpSecurity http) throws Exception {
http
.formLogin()
.loginPage( "/members/login" )
.loginProcessingUrl( "/members/login" ).permitAll()
.defaultSuccessUrl( "/" )
.successHandler(successHandler())
.usernameParameter( "email" )
WebSecurityConfigurerAdapter를 상속받은 SecurityConfig의 configure에
.usernameParameter("email"); 을 추가해주면 된다.
from http://dublin-java.tistory.com/31 by ccl(S) rewrite - 2020-03-07 12:22:12
댓글
댓글 쓰기