User엔티티를 만들고 이 엔티티를 시프링 시큐리티를 이용하여 로그인 기능을 처리 할려고 할때 사소하지만 모르면 해결하기가 많이 까다로운 실수 가 있었다.
먼저 로그인 기능을 구현하기 위해 User Entity를 만든 뒤 UserDetails를 상속해준다.
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class User implements UserDetails {
그러면 override를 하게 될텐데 마법사를 통해 override를 자동으로 하게되면
@Override
public boolean isAccountNonExpired() {
return false;
}
@Override
public boolean isAccountNonLocked() {
return false;
}
@Override
public boolean isCredentialsNonExpired() {
return false;
}
@Override
public boolean isEnabled() {
return false;
}
이 부분들이 false로 뜨게 될 것이다.
계정만료여부, 계정 잠김여부, 계정 활성화 여부등을 물어 보는 것인데 이게 false로 되어있으면 로그인을 시도하면 아이디와 비밀번호를 올바르게 입력을 해도 오류가 뜨게 된다.


이런 오류들이 뜨게 되는데 이 오류들은 스프링시큐리티에 의해 인증을 받지 못했을 때 뜨는 오류이다.
이 오류의 해결법은
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
userdetails 로부터 override한 메서드들의 반환 값을 true로 바꿔야 한다.
이렇게 하면 로그인이 거절당하는 오류를 해결할 수 있다.
이 오류때문에 정말 많이 해맸다.
원인을 알 수가 없어서 로그인 로직을 처음부터 끝까지 책보고 찾아보다가 겨우 찾았다.
역시 한번 구현한 걸로는 다 알 수가 없다.
'project > 모임웹프로젝트' 카테고리의 다른 글
| 메인페이지 구성 (0) | 2024.11.18 |
|---|---|
| 아이디 비밀번호 찾기 구현(11) (0) | 2024.09.30 |
| 모임 웹프로젝트 로그인 기능 구현(9) (1) | 2024.09.30 |
| 모임 웹 프로젝트 회원가입 중복확인 (8) (0) | 2024.09.29 |
| 모임 웹 프로젝트 회원가입 아이디 중복검사 처리(7) (0) | 2024.09.29 |