CustomAuthenticationProvider.java 1.76 KB
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;
  }

}