Session 登录,然后在第一次重定向时注销

Session 登录,然后在第一次重定向时注销,session,cakephp,authentication,login,cakephp-2.0,Session,Cakephp,Authentication,Login,Cakephp 2.0,在本地服务器上,一切都正常运行:PHP5.3.4、MySQL 5.1.49、Apache2.2.17和CakePHP2.0.1 但当我部署到生产服务器时:PHP5.3.5、MySQL 5.1.49、Apache2。?和CakePHP2.0.1 。。。发生了一个奇怪的错误。登录操作已成功执行,因为我可以在my UserController上验证Login()操作(并且我已跟踪所有堆栈调用)。但正如它重定向到/admin URL(即特定操作的路由器路径)一样,用户将从会话中删除,并返回到“notlo

在本地服务器上,一切都正常运行:PHP5.3.4、MySQL 5.1.49、Apache2.2.17和CakePHP2.0.1

但当我部署到生产服务器时:PHP5.3.5、MySQL 5.1.49、Apache2。?和CakePHP2.0.1

。。。发生了一个奇怪的错误。登录操作已成功执行,因为我可以在my UserController上验证
Login()
操作(并且我已跟踪所有堆栈调用)。但正如它重定向到/admin URL(即特定操作的路由器路径)一样,用户将从会话中删除,并返回到“notlogged”状态。另外,AuthComponent中的follow if子句工作得不太好,
$this->flash
根本没有显示任何内容

(/lib/Cake/Controller/Component/AuthComponent.php:第315行)

我正在使用Auth/Acl组件。我已在配置为我的答案

我不知道发生了什么事

编辑:
今天早上我注意到:这个问题只会发生,但只会发生在远程服务器上,在Chrome或Opera中——都是MacOSX。我也在其他机器上测试过,Mac和Windows,一切正常。这肯定是我机器上的东西。可能是/etc/hosts中的一些设置

听起来像是会话问题,请尝试一些基本测试。使用普通php函数在会话中设置一个值,刷新页面并查看数据是否仍在会话中。如果没有,那么我会与主机联系。

我在尝试使用cake2的cakeDC用户插件时遇到了类似的情况。如果我在user\u控制器中的redirect()之前退出login(),并回显一个html链接到$this->Auth->loginRedirect本应接收我的页面,那么Auth组件工作了

因此,这似乎是一个与重定向相结合的会话问题

我只是通过使用启用的“use_trans_sid”更改/Config/core.php中的会话设置,才使其正常工作:


我认为它是$this->Session->flash($this->authromer);嗨,苏希尔!实际上,正确的方法应该是$this->Session->setFlash($this->authorror);。这两种方法在locahost都可以正常工作,但在生产服务器上都不起作用:(真正糟糕的问题是,用户在$controller->redirect($loginAction)和新页面上的Acl验证之间的某个时间点注销。我确信用户在重定向到新页面之前就已经登录了。3wv,这一点很好。我尝试过设置和运行,但没有成功。我将仔细检查,同时考虑Kevin的建议。
if (!$request->is('ajax')) {
    $this->flash($this->authError);
    $this->Session->write('Auth.redirect', Router::reverse($request));
    $controller->redirect($loginAction);
    return false;
Configure::write('Session', array(
        //'defaults' => 'php'
        'defaults' => 'cake',
        'cookie' => 'CAKEPHP2',
        'ini' => array('session.use_trans_sid' => true)
    ));