CakePHP';s Auth->;登录在生产中不起作用,但在测试中起作用

CakePHP';s Auth->;登录在生产中不起作用,但在测试中起作用,cakephp,login,authentication,autologin,Cakephp,Login,Authentication,Autologin,我有一个CakePHP网站,一直工作得很好 我刚刚开发了一个新功能,可以在某一点上自动登录用户,并将其重定向到登录墙后面的页面 这在我的开发机器上运行得很好,但在生产环境中,用户会被重定向到登录页面 相关代码:(不多) Customer是用于身份验证的模型 在服务器中,我看到我被重定向到/customers/signup,这将我重定向到/customers/login 最让我困惑的是,这在我的机器上运行得非常好 我在服务器中转储了Auth->Login的返回值,它返回1,因此理论上一切正常,用户

我有一个CakePHP网站,一直工作得很好

我刚刚开发了一个新功能,可以在某一点上自动登录用户,并将其重定向到登录墙后面的页面

这在我的开发机器上运行得很好,但在生产环境中,用户会被重定向到登录页面

相关代码:(不多)

Customer是用于身份验证的模型

在服务器中,我看到我被重定向到/customers/signup,这将我重定向到/customers/login

最让我困惑的是,这在我的机器上运行得非常好

我在服务器中转储了Auth->Login的返回值,它返回1,因此理论上一切正常,用户应该已经登录

我能想到的一些东西在我的机器和服务器之间是不同的:

  • 开发机器是Windows,服务器是Linux。这有时会引入区分大小写的问题,但是我重定向到的注册方法都是小写的,我不认为这里会有这样的问题
  • 开发计算机是IIS,服务器是LiteSpeed。也许利特斯比在搞什么鬼?这将是一年多来我第一次在生产中运行这个网站,因为它的速度,我发现了一些不同的东西
  • 生产站点通过SSL,而开发人员未通过SSL。我不明白这怎么会是个问题
任何想法都是无限欢迎的


谢谢大家!

在开发模式下,身份验证在我的机器上运行正常,但在生产模式下,服务器上运行不正常,我也遇到了问题。令人惊讶的是,当我将服务器更改为开发模式时,它开始正常工作。然后我又回到了生产,它仍然在工作。也许是缓存问题。

经过一个漫长的尝试不同奇怪事物的过程后,结果证明这一切归结为:

ini_set('session.referer_check', $this->host);
这是CakePHP标准安全特性的一部分。。。它设置INI设置


如果对调用AUTH-Login的操作的请求来自另一个主机(域/子域名/任何东西),PHP将考虑会话无效,这会有效地破坏自动登录尝试。当你说“发展模式”时,你是指这个吗?Configure::write('debug',2);--如果是这样的话,我只是尝试了一下,不幸的是,它没有起作用。即使使用debug=2,它也不会自动登录。是的,这正是我的意思。这是身份验证失败的唯一部分,还是身份验证通常不起作用?生产服务器中的所有功能都正常工作,除了这个。这是我“强制”登录的唯一部分,我通常会将用户发送到登录页面,让CakePHP处理。是的,这是唯一失败的地方。生产站点是否完全通过SSL提供服务?有人告诉我,在从/切换到SSL时,有时会话会中断。有趣的是。。。站点“A”中有一个HTTPS表单,它将数据发布到站点“B”中的HTTPS URL(CakePHP所在的位置)。处理此请求(通过HTTPS)时,会自动登录并重定向到另一个URL,该URL也通过HTTPS(实际上,它没有指定重定向的协议)所以是的,所有事情都是通过SSL进行的,但是,从来没有一个页面呈现并从相关站点发送到客户端,所以可能是cookies问题,可能吧?然而,如果是这样的话,问题是为什么它可以在HTTP上工作,而不是在HTTPS上工作。这很奇怪。您是否尝试过将蛋糕的安全性设置为中等(如果设置为高)?显然,人们在这方面有很多问题。是的,事实上,安全级别一直是中等的,因为如果人们试图同时加载多个页面,高级别的用户会注销。所以,是的,“高”是非常不稳定的:-)请,如果你有任何其他想法,让他们来,我真的被困在这个。。。

ini_set('session.referer_check', $this->host);