一:自定义用户登录逻辑:
1.1:创建MyUserDetailService实现UserDetailService:
@Component
public class MyUserDetailsService implements UserDetailsService {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private PasswordEncoder passwordEncoder;
/*
* (non-Javadoc)
*
* @see org.springframework.security.core.userdetails.UserDetailsService#
* loadUserByUsername(java.lang.String)
*/
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
logger.info("登录用户名:" + username);
// 根据用户名查找用户信息
//根据查找到的用户信息判断用户是否被冻结
String password = passwordEncoder.encode("123456");
logger.info("数据库密码是:"+password);
return new User(username, password,
true, true, true, true,
AuthorityUtils.commaSeparatedStringToAuthorityList("admin"));
}
}
其中User是SpringSecurity的默认实现。根据用户名和密码进行登录认证,具体的数据库的操作没有实现。
1.2:密码的加密和解密:
在安全配置类中进行PasswordEncoder注入:
PasswordEncoder每次加密的盐都是随机产生的。即每次相同的密码的加密后的密码是不一样的。