我在FuelPHP的SimpleAuth登录时遇到了明显只有IE的问题。它在localhost上工作正常,但在我正在处理的网站的暂存版本上,Auth::check()
在登录后总是失败。
如果我在验证登录表单时转储Auth::check()
的内容,我会收到true
,表明用户已成功登录。但是,在我将用户重定向到下一页后(使用Response::redirect
),Auth::check()
再次评估为false
。我不认为问题与重定向直接相关,因为即使我没有重定向用户,登录仍然会失败。
出于某种原因,这个问题似乎只出现在IE中(8和9)。在Opera,Firefox等中,用户登录和注销工作正常。正如我之前所说,它也适用于我本地开发版本的IE。我只能认为它必须是一些cookie或会话处理问题,但我不知道问题是什么。如果有人能对此有所了解,我将非常感激!
我正在使用FuelPHP 1.1版
答案 0 :(得分:2)
我整天都在处理同样的问题,最后,我解决了。
在我的情况下,问题出现在Safari / Mac上,每次登录后会话都会被杀死。事实上,这是因为我使用ajax调用(在服务器上使用相对路径)来登录我的用户,并且显然,ajax调用发送一个与http调用不同的用户代理,并且不匹配导致Fuel终止会话。
我使用的解决方案是禁用会话配置中的match_ua
值。
为了使事情更安全,我启用了match_ip
。我不知道这是不是很好的解决方案。
我仍然不知道为什么用户代理会有所不同。如果有人能让我更清楚这个问题,非常感谢。