// 明文+随机盐值》加密存储
return new BCryptPasswordEncoder();
}
//用户验证的业务流程 也就是查询用户的业务代码
@Autowired
UserDetailsService customUserDetailsService;
/**
-
认证管理器: 将上文查询用户是否存在的service按样式写入 修改service 其余写死 还有密码写死或存放内存中等方式 这里不讨论
-
- 认证信息(用户名,密码)
-
@param auth
-
@throws Exception
*/
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// 数据库存储的密码必须是加密后的也就是必须要有passwordEncoder,不然会报错:There is no PasswordEncoder mapped for
auth.userDetailsService(customUserDetailsService);
}
//验证码配置
@Autowired
private ImageCodeValidateFilter imageCodeValidateFilter;
//当验证成功后可以返回json或者路径 但是现在基于前后台分离 大多数都是返回json AuthenticationSuccessHandler为成功后转为json的处理 按照本文配置即可
@Autowired
private AuthenticationSuccessHandler customAuthenticationSuccessHandler;
//当验证成功后可以返回json或者路径 但是现在基于前后台分离 大多数都是返回json AuthenticationFailureHandler为失败后转为json的处理 按照本文配置即可
@Autowired
private AuthenticationFailureHandler customAuthenticationFailureHandler;
//建立数据源
@Autowired
DataSource dataSource;
@Autowired
private InvalidSessionStrategy invalidSessionStrategy;
/**
- 当同个用户session数量超过指定值之后 ,会调用这个实现类
*/
@Autowired
private SessionInformationExpiredStrategy sessionInformationExpiredStrategy;
/**
-
持久化token
-
@return
*/
@Bean
public JdbcTokenRepositoryImpl jdbcTokenRepository() {
JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl();
jdbcTokenRepository.setDataSource(dataSource