Spring
[Spring Security] loadUserByUsername(String username)에서 username이 empty일 때
bedi
2019. 1. 18. 16:27
스프링 시큐리티를 이용해서 로그인을 하는데
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를 치니까 역시나 나같은 사람들이 많았고
여기에 해답이 있었다.
<input type="email" class="form-control" placeholder="Email" name="email" autofocus="autofocus" >
문제는 로그인 폼에서 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"); 을 추가해주면 된다.