SMALL
해결 코드
@Service
@RequiredArgsConstructor
@Slf4j
public class LoginService implements UserDetailsService, AuthenticationProvider {
private final UserRepository repository;
private final PasswordEncoding passwordEncoding;
//TODO: 이거 고쳐야함.
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
log.info("username: " + username);
Optional<User> optionalUser = repository.findByUserId(username);
if (optionalUser.isEmpty()) {
throw new UsernameNotFoundException("User not found with username: " + username);
}
User user = optionalUser.get();
return new UserDetail(user);
}
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
UserDetails userDetail = loadUserByUsername(authentication.getName());
String password = authentication.getCredentials().toString();
System.out.println(authentication.getName());
System.out.println(userDetail.getPassword());
System.out.println(password);
System.out.println(passwordEncoding.getEncoding().matches(password, userDetail.getPassword()));
if (!(passwordEncoding.getEncoding().matches( password,userDetail.getPassword()))) {
return null;
}
System.out.println("통과됨?");
return new UsernamePasswordAuthenticationToken(userDetail, password, userDetail.getAuthorities());
}
@Override
public boolean supports(Class<?> authentication) {
return authentication.equals(UsernamePasswordAuthenticationToken.class);
}
}
에러 발생지점
여기에 있는 코드중
if (!(passwordEncoding.getEncoding().matches( userDetail.getPassword(), password))) {
return null;
}
Security 를 공부하던 와중 비밀번호 암호화 된것을 request 로 받은 비밀번호와 비교하는 이 코드 때문에 게속 true 로 나와야되는 false 로 나오기 시작했다..도대체 왜 그러는지 이해가 안되서 디버그도 해보고 다시 암호화해서 비교해보고 구글링도 해보았지만 찾지 못하였다... 그러다 문득 매개변수가 다른게 아닐까? 하는 생각에 매개변수를 이동하였다.
if (!(passwordEncoding.getEncoding().matches( password,userDetail.getPassword()))) {
return null;
}
....
......해결..
이걸 위해 나는 2시간을 뻘짓을 하였다.. 해결이 되자 웃음이 나왔지만 그래도 기분이 좋다.
이제 마저 Security 인증 단게를 끝내고 작업을 마저 해야 겠다...
반응형
LIST
'TIL' 카테고리의 다른 글
DB 예약어 Table 이름 (0) | 2023.06.13 |
---|---|
파일 경로 에러 (0) | 2023.06.10 |
RedisConfig 에서 오류 발생. (0) | 2023.06.01 |
동기와 비동기 방식 / 스레드 풀 (0) | 2023.04.27 |
Java_Game 프로젝트 진행중 발생한 문제 공부 ( 멀티스레드 ) (1) | 2023.04.25 |