FuelPHP SimpleAuth登录在IE中不起作用


FuelPHP SimpleAuth Login not Working in IE

FuelPHP的SimpleAuth登录显然存在仅IE的问题。它在localhost上运行良好,但在我工作的站点的暂存版本上,Auth::check()总是在登录后失败。

如果我在验证登录表单时转储Auth::check()的内容,我会得到true,这表明用户已经成功登录。但是,在我将用户重定向到下一个页面(使用Response::redirect)后,Auth::check()再次评估为false。我不认为这个问题与重定向直接相关,因为即使我不重定向用户,登录仍然会失败。

由于某种原因,这个问题似乎只出现在IE(8和9)中。在Opera、Firefox等中,用户登录和注销都可以正常工作。正如我之前所说,它也适用于IE的本地开发版本。我只能认为这一定是cookie或会话处理问题,但我不知道问题出在哪里。如果有人能澄清这一点,我将不胜感激!

我使用的是FuelPHP 1.1版

我整天都在处理同一个问题,终于解决了。

在我的案例中,问题出在Safari/Mac上,每次登录后会话都会被终止。事实上,这是因为我使用ajax调用(在服务器上有相对路径)来登录我的用户,显然ajax调用发送的用户代理与http调用不同,不匹配导致Fuel终止了会话。

我使用的解决方案是在会话配置中禁用match_ua值。为了使事情更加安全,我启用了match_ip。我不知道这是否是一个好的解决方案。

我仍然不知道为什么用户代理会有所不同。如果有人能让我更清楚地了解这个问题,非常感谢。