登录表单中的 CSRF _token 值刷新
Posted
技术标签:
【中文标题】登录表单中的 CSRF _token 值刷新【英文标题】:CSRF _token value refresh in a login form 【发布时间】:2015-05-20 04:28:33 【问题描述】:我有一个使用 Ajax 提交的登录表单。在一种特定情况下,用户登录后,我需要使用Auth::logout()
将其注销并显示一个额外的模式框。所有这些都无需重新加载页面即可发生。
当登录模式再次打开并提交时,我得到一个令牌不匹配错误。发生这种情况的原因是因为注销使用Session::flush()
。在此之后,_token
Session 变量被刷新,而登录表单中的_token
输入保持不变(因为提到的缺少页面重新加载)。
如何刷新登录表单中的 CSRF _token
,使其以安全的方式与 Session 中刷新的匹配?
【问题讨论】:
【参考方案1】:当您通过 ajax 提交登录时,您的服务器可能会发回某种响应以让浏览器知道登录成功。您应该使用此响应发回新的 CSRF 令牌,以便您可以更新表单客户端(使用 javascript)。
要提供更多详细信息(例如,如何更新表单字段),我们需要查看更多代码。
【讨论】:
好的,谢谢您的提示。我最终按照您所写的那样做:我将新令牌作为额外属性传递给我的 JS 脚本并更新_token
输入值。似乎已经足够了。以上是关于登录表单中的 CSRF _token 值刷新的主要内容,如果未能解决你的问题,请参考以下文章
Forbidden (CSRF token missing or incorrect.):