我正在尝试在Spring 2.5 Boot中实现自定义身份验证。
现在我有一个典型的Spring安全登录使用UsernamePasswordAuthenticationFilter。
我需要实现/覆盖什么才能用两个密码登录帐户?我的意思是主密码和临时密码-分配给用户,以防忘记(通过邮件发送)?
注意:临时密码有有效期
我使用spring security实现了这个。
你所要做的就是:
- 实现UserDetails,你将有密码,到期日期和其他信息,如用户id或电子邮件(你可以存储在这里你的项目需要)
- 使用临时密码、有效期和用户id创建表
- 添加用户请求时分配临时密码的功能
- 创建接口temporarypassworrepository
- 创建临时ypassworduserdetailsservice,实现UserDetailsService,并在重写方法中找到临时ypassworrepository中的用户:
UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
- 将实现的UserDetailsService添加到SecurityConfiguration类的方法中:
protected void configure(AuthenticationManagerBuilder auth) {
authenticationManagerBuilder
.userDetailsService(your basic user datails service)
.passwordEncoder(passwordEncoder());
authenticationManagerBuilder
.userDetailsService(TemporaryPasswordUserDetailsService)
.passwordEncoder(passwordEncoder());
}
因为spring授权用户时,至少有一个UserDatailsService匹配的密码,那么你现在可以使用两个密码登录。
注意你还应该实现;
删除数据库中过期密码