package com.codesign.base.security.model;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.Collection;
public class SecurityUser implements UserDetails {
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return null;
}
@Override
public String getPassword() {
return "test";
}
@Override
public String getUsername() {
return "test";
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
}
우선 간단하게 테스트만 하기위해 password, username는 "test"
, boolean type은 true
로 변경
package com.codesign.base.security.service;
import com.codesign.base.security.model.SecurityUser;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
@Service
public class CustomUserDetailsService implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
System.out.println(" UserDetailsService 인증을 받습니다. ");
// 나중에 DB에서 사용자정보를 조회해 SecurityUesr에 주입!
return new SecurityUser();
}
}
단순하게 username으로 사용자정보를 조회하는 서비스!
username과 password를 비교하는 로직은 여기서 하는게 아니라 OncePerRequestFilter
를 상속받은 클래스에서 비교한다.
현재 new SecurityUser()
에 username, password가 "test"
로 하드코딩 되어 있다.