【问题标题】:password reset and thymeleaf redirect密码重置和百里香重定向
【发布时间】:2019-08-05 00:04:32
【问题描述】:

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

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

    @RequestMapping(value = "/user/savePassword", method = RequestMethod.POST) public String savePassword(Locale locale, @RequestParam("username") String username, @RequestParam("password") 字符串密码,模型模型) {

    // 逻辑在这里 ...

    "return "登录"; }

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

  1. 提示用户到登录页面(虽然浏览器栏显示“savePassword”)登录。提供用户名和新密码,服务器返回403。控制台没有错误,唯一的表明出现问题的迹象是 Chrome 开发者工具从登录 POST 返回 403。显示默认错误页面。

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

我看不出错误的来源或原因。我尝试通过“java -jar”运行并使用打开调试 cmets 的 IDE 调试器。根本不会生成任何错误或消息。没有会话,用户没有经过身份验证,那么为什么会抛出 403(假设通过 Spring Security)?

【问题讨论】:

    标签: spring spring-security thymeleaf


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:
      1. 查看您的身份验证方法并确保两个密码在 DB 中是否匹配。
      2. 确保在更改新密码时您使用的是 passwordEncoders?因为 403 错误是禁止的。

      【讨论】:

      • 密码已被加密并正确存储在数据库中 - 一旦我手动(通过单击菜单)从更改密码导航到登录页面,我实际上可以登录。重定向到登录页面是导致 403
      猜你喜欢
      • 1970-01-01
      • 2019-01-04
      • 2020-12-30
      • 2014-04-10
      • 2015-12-09
      • 1970-01-01
      • 2012-12-15
      • 2016-07-17
      • 2020-02-05
      相关资源
      最近更新 更多