gpt4 book ai didi

cookies - 在 CakePHP 3 中,按照教程,为什么登录表单会静默失败?

转载 作者:行者123 更新时间:2023-12-05 01:27:52 27 4
gpt4 key购买 nike

这里有一些令人费解的行为:按照 CakePHP 3 教程(大约),我创建了一个登录表单并设置了 AuthComponent 以使用表单输入进行身份验证。我还设置了 AuthComponent 来授权。但是当我提交登录表单时,页面似乎重新加载,好像什么也没发生一样。为什么?

其他细节(事实证明是相关的):我在域的根目录中安装了 CakePHP,并且我没有使用 mod_rewrite。我按照 config/app.php 中的说明禁用了 mod_rewrite。

最佳答案

我最近遇到了这个错误并花了很多时间来解决它。它表现为 session 持久性问题。无论我尝试使用何种 session 处理程序, session 数据都不会在页面加载期间持续存在。触发我调查的可观察行为如上所述; AuthComponent 虽然可以正确识别用户并使用 setUser()“保存”它,但无法在下一页加载时“记住”已保存的用户。换句话说,这看起来像是登录表单无声地失败了。这种行为原来是 cookie 在随后的页面加载中加载失败的症状。 AuthComponent(通过 Cake\Network\Session)会将新识别的用户写入 cookie,但不会在下一个页面加载时加载 cookie,导致它看起来好像我的登录屏幕只是重新呈现。

我将这个问题追溯到 config/app.php 中 Session 组下的 'cookiePath' 设置。似乎在默认设置下,cookie 的路径被设置为“/webroot/”。在我的设置中,我没有使用 mod_rewrite,所以我的 URL 看起来像/index.php/users/login。对于/webroot/路径,cookie 未被正确识别和加载。因此,后续页面加载(1)无法读取当前 session ID,(2)无法找到任何先前存储的 session 数据(无论 session 数据如何存储),(3)无法识别当前用户, (4) 让我回到登录页面,没有任何 Flash 错误消息。

我不知道如果你使用 mod_rewrite 这个问题是否会消失,我意识到 there has been extensive discussion about this on GitHub .我不确定在该线程中谁是正式正确的。但是,如果这对任何与我有类似配置的人有帮助,我通过在 config/app.php 的 'Session' 键中设置 'cookiePath' => '/' 解决了这个问题。

关于cookies - 在 CakePHP 3 中,按照教程,为什么登录表单会静默失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29135954/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com