密码重置和百里香重定向

时间:2019-01-08 12:25:41

标签: spring spring-security thymeleaf

我有一个带有Spring Security(4.2)和ThymeLeaf应用程序的Spring Boot(1.5.6),它允许用户重置密码。所有的html页面都在src / resources / templates中。基本流程是:

  1. 用户提供用户名(通过resetPage.html)
  2. 凭据已清除
  3. 令牌已生成并通过电子邮件发送到用户名电子邮件
  4. 用户从电子邮件中单击的URL重定向到重置密码页面(changePassword.html),以便用户创建新密码
  5. 新密码将被持久化并由以下代码处理:

    @RequestMapping(值=“ / user / savePassword”,方法= RequestMethod.POST)     public String savePassword(Locale locale,@RequestParam(“ username”)字符串用户名,                                @RequestParam(“ password”)字符串密码,模型模型){

    //逻辑在这里 ...

    “返回”登录“; }

至此,一切都按预期进行了。数据库已更新,控制台日志中没有错误。

  1. 提示用户登录页面(尽管浏览器栏上显示“ savePassword”)。提供用户名和新密码,服务器返回403。控制台中没有错误,唯一的错误表示发生了问题是Chrome开发者工具从登录POST返回403。系统会显示默认错误页面。

  2. 如果我导航到首页然后登录页面,则可以使用新更改的凭据进行身份验证。

我没有看到错误的出处或原因。我试过通过“ java -jar”并在IDE调试器中打开调试注释来运行。完全不会产生错误或消息。没有会话,用户未通过身份验证,那么为什么会抛出403(假设通过Spring Security)?

2 个答案:

答案 0 :(得分:0)

我终于找到了答案。因为日志中没有任何信息,所以我认为这是由Spring Security框架来完成的。我更新了安全配置,以禁用/ login页面的CSRF。现在它可以按需工作了。

答案 1 :(得分:-1)

  1. 查看您的身份验证方法,并确保两个密码在数据库中是否匹配。
  2. 确定更改新密码时是否使用passwordEncoders ?。因为403错误是“禁止(未经授权)”。