[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

댓글

이 블로그의 인기 게시물

데이터 바인딩 추상화 - propertyEditor

[샤니마스 SPRING PARTY2020] THE IDOLM @ STER SHINY COLORS SPRING...

Spring Web Form