CakePHP会话/身份验证间歇性登出

13

我收到用户反馈,他们在使用屏幕时会被立即踢回登录界面,这种情况并非总是发生,而是随机出现。

我正在使用CakePHP和Auth组件,除了这个问题之外似乎一切正常。

我曾经在Cake论坛上得到过一些反馈,称这有时是由404请求引起的,因为它会重置会话,例如如果您有一个损坏的图像链接或缺失的favicon文件。我打开了Firebug并没有发现失败的请求,所以我排除了这种可能性,但是用户仍然会偶尔被登出。这似乎跨浏览器和操作系统发生。

以下是我的配置设置摘要: Security.level = high Session.timeout = 1200 // 这意味着我的实际超时时间应该是12,000秒 Session.save = php

我真的不知道是什么原因导致了这个问题...

4个回答

9

我也遇到了安全性设置过于高的问题。当您将其设置为高时,它会在每个请求上重新生成会话: 如果'Security.level'设置为'high',则CakePHP会话ID也会在请求之间重新生成。

我在跨浏览器方面也遇到了这个问题,所以我知道这不是最佳解决方案,但我只是将安全设置更改为中等,并更改了我的会话超时时间以反映该设置,自那时以来就没有遇到任何问题了。


1

我曾经遇到过类似的问题,后来发现是在core.php文件中的user_agent检查,将其设置为false即可!

问题出在页面刷新后会导致session id改变,从而使我被登出,但在Session对象中却出现了Attempted Session Hijack!!!的错误。 pr($this->Session);

在core.php中将其设置为false即可! Configure::write('Session.checkAgent', false);


非常感谢这个。Configure::write('Session', array( 'defaults' => 'database', 'checkAgent', false, 'handler' => array( 'model' => 'cake_sessions' ) //'timeout' => 480 // 8 hours )); - Carlos Garcia

0

请检查你的 Auth->allow 或者 ->deny,因为你的用户可能正在访问受限制的控制器部分或操作。

其次,请检查 CakePHP 的特定 Sanitize,因为“高安全性”选项常常容易出现问题。

404 页面重置会话?我从未听说过这个。

我认为你的问题可能出现在身份验证程序中。如果你限制太多东西,就可能会发生某些请求属性丢失导致失败的情况。

例如:UserOne 尝试访问你的网站,他的用户名包含一些字符串,导致用户名被错误解释。这个名称可以在数据库中找到,但是身份验证无法将其链接到请求。

像这样的错误总是隐藏在你的代码中,你没有想到它们会出现在哪里。


抱歉,我可能需要进一步指定。使用Auth的用户登录过程很好。当尝试访问/admin/网址时,我已将其设置为要求Auth,并且对于正确的屏幕确实要求了Auth。登录没有问题,它可以在数据库中找到名称,但问题是当我已经登录时,它会偶尔将我踢出。 - croixhaug
404 请求显然可以重置 Cake Auth/Session,而不是一般的 PHP 问题。 - croixhaug
尝试重新设置CakePHP,包括您的数据库(等等),这可能会有所帮助。 - Julius F

0

安全级别设置为高会这样做。在core.php中将其设置为中等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接