我有一个一直运作良好的CakePHP网站。
我刚开发了一项新功能,可以在某个时刻自动记录用户,并将他重定向到登录墙后面的页面。
这在我的开发机器中非常有效,但在生产中,用户会被重定向到登录页面。
相关代码:(不多)
$objCustomer = $this->Customer->findById($customerId);
$this->Auth->login($objCustomer);
$this->redirect("/customers/signup");
客户是用于身份验证的模型。
在服务器中,我看到我被重定向到/ customers / signup,并将我重定向到/ customers / login
让我最困惑的是,这在我的机器中完美运行。
我在服务器中转储了Auth-> Login的返回值,它返回1,所以理论上一切都很好,用户应该已经登录。
我能想到的一些事情在我的机器和服务器之间是不同的:
任何想法都是无限欢迎的!
谢谢!
答案 0 :(得分:0)
在开发模式下,我的计算机上的身份验证工作正常,但在生产模式下无法在服务器上运行,我也遇到了问题。令人惊讶的是,当我将服务器更改为开发模式时,它开始正常工作。然后我改回生产,它仍然在工作。也许这是一些缓存问题。
答案 1 :(得分:0)
经过LOOOONG尝试不同奇怪事物的过程后,事实证明这一切归结为:
ini_set('session.referer_check', $this->host);
这是CakePHP标准安全功能的一部分......它设置了INI设置。
如果对“将调用Auth->登录的操作的请求来自另一个主机(域/子域/无论什么)”,PHP将认为该会话无效,这有效地杀死了自动登录尝试。