【发布时间】:2019-08-05 00:04:32
【问题描述】:
我有一个带有 Spring Security (4.2) 的 Spring Boot (1.5.6) 和 ThymeLeaf 应用程序,允许用户重置密码。所有 html 页面都在 src/resources/templates 中。基本流程是:
- 用户提供用户名(通过 resetPage.html)
- 凭据已清除
- 生成令牌并通过电子邮件发送到用户名电子邮件
- 用户点击电子邮件中的 url 被重定向到重置密码页面 (changePassword.html) 以便用户创建新密码
-
新密码被发布到服务中,并由该代码处理:
@RequestMapping(value = "/user/savePassword", method = RequestMethod.POST) public String savePassword(Locale locale, @RequestParam("username") String username, @RequestParam("password") 字符串密码,模型模型) {
// 逻辑在这里 ...
"return "登录"; }
此时一切都按预期进行。数据库已更新,控制台日志中没有错误。
提示用户到登录页面(虽然浏览器栏显示“savePassword”)登录。提供用户名和新密码,服务器返回403。控制台没有错误,唯一的表明出现问题的迹象是 Chrome 开发者工具从登录 POST 返回 403。显示默认错误页面。
如果我导航到主页然后登录页面,我可以使用新更改的凭据进行身份验证。
我看不出错误的来源或原因。我尝试通过“java -jar”运行并使用打开调试 cmets 的 IDE 调试器。根本不会生成任何错误或消息。没有会话,用户没有经过身份验证,那么为什么会抛出 403(假设通过 Spring Security)?
【问题讨论】:
标签: spring spring-security thymeleaf