New file |
| | |
| | | package cn.exrick.xboot.core.config.security; |
| | | |
| | | import cn.hutool.extra.spring.SpringUtil; |
| | | import jodd.util.Base64; |
| | | import org.springframework.context.annotation.Configuration; |
| | | 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.stereotype.Component; |
| | | |
| | | /** |
| | | * @author xfei |
| | | * @date 2023/4/28 14:13 |
| | | */ |
| | | public class DaoAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider { |
| | | @Override |
| | | protected void additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken authentication) throws AuthenticationException { |
| | | String password= authentication.getCredentials().toString(); |
| | | password = Base64.decodeToString(password); |
| | | UsernamePasswordAuthenticationToken newAuthentication = new UsernamePasswordAuthenticationToken(authentication.getPrincipal(), password); |
| | | newAuthentication.setDetails(authentication.getDetails()); |
| | | } |
| | | |
| | | @Override |
| | | protected UserDetails retrieveUser(String s, UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken) throws AuthenticationException { |
| | | UserDetails userDetails = SpringUtil.getBean(UserDetailsService.class).loadUserByUsername(s); |
| | | |
| | | |
| | | return userDetails; |
| | | } |
| | | } |