스프링/스프링 시큐리티

로그인 검증 로직

까마귀! 2024. 3. 23. 22:24
CustomUserDetailsService
@Service
public class CustomUserDetailsService implements UserDetailsService {

    @Autowired
    private UserRepository userRepository;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {

        UserEntity userData = userRepository.findByUsername(username);

        if (userData != null){

            return new CustomUserDetails(userData);
        }

        return null;
    }
}

 

 

 

 

UserRepository
public interface UserRepository extends JpaRepository<UserEntity, Integer> {

    boolean existsByUsername(String username);

	// 코드 추가
    UserEntity findByUsername(String username);
}

 

 

 

 

CustomUserDetails
public class CustomUserDetails implements UserDetails {

    private UserEntity userEntity;
    public CustomUserDetails(UserEntity userEntity){
        this.userEntity = userEntity;
    }

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() { // 사용자의 특정한 권한을 리턴

        Collection<GrantedAuthority> collection = new ArrayList<>();

        collection.add(new GrantedAuthority() {

            @Override
            public String getAuthority() {

                return userEntity.getRole();
            }
        });

        return collection;
    }

    @Override
    public String getPassword() {
        return userEntity.getPassword();
    }

    @Override
    public String getUsername() {
        return userEntity.getUsername();
    }

	//밑에 4개는 실제 상황에 따라 false로 한다. true는 사용 가능하다는 뜻
    @Override
    public boolean isAccountNonExpired() { // 사용자의 계정이 만료되었는지
        return true;
    }

    @Override
    public boolean isAccountNonLocked() { // 사용자의 계정이 잠겨있나
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() { // 사용자의 자격 증명이 만료됐나
        return true;
    }

    @Override
    public boolean isEnabled() { // 계정 활성화로 사용가능하나
        return true;
    }
}

 

'스프링 > 스프링 시큐리티' 카테고리의 다른 글

csrf 적용  (0) 2024.03.23
세션 설정  (0) 2024.03.23
회원가입 로직  (0) 2024.03.23
BCrypt 암호화 메소드 기본설정  (0) 2024.03.07
커스텀 로그인 설정  (0) 2024.03.07