登录,然后注销第一个重定向

时间:2011-11-23 00:23:55

标签: session cakephp authentication login cakephp-2.0

在本地服务器上运行正常: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中的一些设置。

2 个答案:

答案 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)
    ));