| | |
| | | package cn.exrick.xboot.core.config.security; |
| | | |
| | | import cn.exrick.xboot.core.common.utils.ResultUtil; |
| | | import cn.hutool.extra.spring.SpringUtil; |
| | | import jodd.util.Base64; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.security.authentication.BadCredentialsException; |
| | | import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; |
| | | import org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider; |
| | | import org.springframework.security.core.AuthenticationException; |
| | | import org.springframework.security.core.userdetails.UserDetails; |
| | | import org.springframework.security.core.userdetails.UserDetailsService; |
| | | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | |
| | | public class DaoAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider { |
| | | @Override |
| | | protected void additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken authentication) throws AuthenticationException { |
| | | if (authentication.getCredentials()==null){ |
| | | throw new BadCredentialsException("密码为空"); |
| | | } |
| | | String password= authentication.getCredentials().toString(); |
| | | password = Base64.decodeToString(password); |
| | | if (!new BCryptPasswordEncoder().matches(password, userDetails.getPassword())) { |
| | | throw new BadCredentialsException("密码错误"); |
| | | } |
| | | |
| | | |
| | | UsernamePasswordAuthenticationToken newAuthentication = new UsernamePasswordAuthenticationToken(authentication.getPrincipal(), password); |
| | | newAuthentication.setDetails(authentication.getDetails()); |
| | | } |