package com.daeucna.board.security; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.core.AuthenticationException; import org.springframework.stereotype.Component; import com.daeucna.board.security.domain.UserDto; import lombok.extern.slf4j.Slf4j; @Slf4j @Component public class CustomAuthenticationProvider implements AuthenticationProvider { @Autowired private CustomLoadUserByUsername customLoadUserByUsername; @Autowired private PasswordEncoder passwordEncoder; @Autowired private BCryptPasswordEncoder bCryptPasswordEncoder; @Override public Authentication authenticate(Authentication authentication) throws AuthenticationException { UserDto user = (UserDto) customLoadUserByUsername.loadUserByUsername(authentication.getName().toString()); String reqPassword = authentication.getCredentials().toString(); if(!passwordEncoder.matches(reqPassword, user.getPassword())) { log.error("login Check Error"); log.info("enc:" + bCryptPasswordEncoder.encode(reqPassword)); throw new BadCredentialsException("Not Found User"); } return new UsernamePasswordAuthenticationToken(user, null, user.getAuthorities()); } @Override public boolean supports(Class authentication) { return true; } }