在本地服务器上运行正常:PHP 5.3.4,MySQL 5.1.49,Apache 2.2.17和CakePHP 2.0.1。
但是当我部署到生产服务器时:PHP 5.3.5,MySQL 5.1.49,Apache 2.?和CakePHP 2.0.1。
......发生了一个奇怪的错误。登录操作已成功执行,因为我可以在我的UserController login()
操作上进行验证(并且我已跟踪所有堆栈调用)。但就像它重定向到/ admin URL(这是指向特定操作的路由器路径)一样,User被从Session中删除,它只是返回到“未记录”状态。在adiction中,AuthComponent中的follow if子句效果不佳,$this->flash
根本没有显示任何内容。
(/ lib / Cake / Controller / Component / AuthComponent.php:第315行)
if (!$request->is('ajax')) {
$this->flash($this->authError);
$this->Session->write('Auth.redirect', Router::reverse($request));
$controller->redirect($loginAction);
return false;
我正在使用Auth / Acl组件。我在CakePHP 2.0: ACL not working
配置了我的答案我不知道发生了什么。
修改 今天早上我已经注意到:问题只会发生,但仅限于远程服务器,Chrome或Opera - 都适用于Mac OSX。我还在其他机器,Mac和Windows上测试过整个东西,一切正常。这肯定是我机器上的东西。或者/ etc / hosts中的一些设置。
答案 0 :(得分:0)
听起来像是会话问题,请尝试一些基本测试。使用普通的php函数在会话中设置一个值,刷新页面并查看数据是否仍在会话中。如果没有,那么我会联系主持人。
答案 1 :(得分:0)
我遇到类似的情况尝试使用cake2的cakeDC用户插件。如果我在user_controller中的redirect()之前退出login()并回显到$ this-> Auth-> loginRedirect应该带我的页面的html链接,那么Auth组件就可以了。
所以这似乎是与重定向结合的Session问题。
我只是通过在启用“use_trans_sid”的情况下更改/Config/core.php中的会话设置来实现它:
Configure::write('Session', array(
//'defaults' => 'php'
'defaults' => 'cake',
'cookie' => 'CAKEPHP2',
'ini' => array('session.use_trans_sid' => true)
));