Spring安全-通过密码和临时密码登录



我正在尝试在Spring 2.5 Boot中实现自定义身份验证。

现在我有一个典型的Spring安全登录使用UsernamePasswordAuthenticationFilter。

我需要实现/覆盖什么才能用两个密码登录帐户?我的意思是主密码和临时密码-分配给用户,以防忘记(通过邮件发送)?

注意:临时密码有有效期

我使用spring security实现了这个。

你所要做的就是:

  1. 实现UserDetails,你将有密码,到期日期和其他信息,如用户id或电子邮件(你可以存储在这里你的项目需要)
  2. 使用临时密码、有效期和用户id创建表
  3. 添加用户请求时分配临时密码的功能
  4. 创建接口temporarypassworrepository
  5. 创建临时ypassworduserdetailsservice,实现UserDetailsService,并在重写方法中找到临时ypassworrepository中的用户:
UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
  1. 将实现的UserDetailsService添加到SecurityConfiguration类的方法中:
protected void configure(AuthenticationManagerBuilder auth) {
authenticationManagerBuilder
.userDetailsService(your basic user datails service)
.passwordEncoder(passwordEncoder());
authenticationManagerBuilder
.userDetailsService(TemporaryPasswordUserDetailsService)
.passwordEncoder(passwordEncoder());
}

因为spring授权用户时,至少有一个UserDatailsService匹配的密码,那么你现在可以使用两个密码登录。

注意你还应该实现;

删除数据库中过期密码

相关内容

  • 没有找到相关文章

最新更新