蛋糕身份验证组件只能在一个浏览器中工作


Cake Auth component only works in one browser

我在本地开发了一款应用程序,在MAMP上用Cakephp 2.8,并使用Chrome进行测试。我按照手册和教程实现了用户使用身份验证组件登录。一切正常,但是当我完成应用程序时,我尝试登录Safari和Firefox,但没有用。我收到使用错误密码但使用正确密码的身份验证错误,登录会将我重定向到主页(我的 Jugadores 控制器的索引(,并且永远无法访问受身份验证保护的操作,我被要求一遍又一遍地登录,就像从未创建过 if 会话一样。当我在实时服务器中部署我的应用程序时,它无法在浏览器中工作,这让我认为我做错了什么,但我找不到什么。

这是我的应用控制器中的代码:

<?php
App::uses('Controller', 'Controller');
class AppController extends Controller {
    public $components = array(
        'Session',
        'Auth' => array(
        'loginRedirect' => array('controller' => 'jugadores', 'action' => 'index'),
        'logoutRedirect' => array('controller' => 'jugadores', 'action' => 'index'),
        'authError' => 'You can not access that page.',
        'authorize' => array('Controller')
        )
    );
    public function isAuthorized($user) {
        return true; //for simplicity. Is it wrong?
    }
    public function beforeFilter() {
        $this->Auth->allow('view','index');
    }
}
?>

我的用户控制器是:

<?php
App::uses('AppController', 'Controller');
class UsersController extends AppController {
    public $components = array('Paginator', 'Flash', 'Session');
    public function beforeFilter() {
        parent::beforeFilter();
    }

    public function login() {
        if($this->request->is('post')){
            if($this->Auth->login()){
                return $this->redirect($this->Auth->redirectUrl());
            } else {
                $this->Flash->set('Wrong user/password.');
            }
        }
    }
    public function logout(){
        return $this->redirect($this->Auth->logout());
    }
}
?>

登录视图如下所示:

<div class="users view">
<h2>Login</h2>
<?php
    echo $this->Form->create('User');
    echo $this->Form->input('username');
    echo $this->Form->input('password');
    echo $this->Form->end('Enter');
?>
</div>

对于用户数据库,我遵循了Cakephp约定。字段:ID、用户名、密码、角色、已创建、修改

编辑:我把它放在AppController的beforeRender函数中:

$this->set('current_user', $this->Auth->user());

并将其打印在布局 default.ctp 中:

print_r($current_user);

Chrome 在本地服务器中测试时始终打印登录的用户数据,但 Firefox 和 Safari 仅在请求身份验证保护操作时打印(并将我带到登录页面(。在实时服务器中,所有浏览器的行为都相同(记录的用户数据并不总是显示(。所以我认为在某种程度上,Auth 正在工作并创建一个会话,但没有按照应有的方式运行。

我尝试在CakePHP 2.8.0-RC1的新副本中实现身份验证,并得到了相同的结果。然后我尝试了 CakePHP 2.7.9 的新副本,即使在将我的控制器、视图和我的应用程序的其余部分复制到此安装:D之后,所有浏览器和服务器中的一切都按预期工作

所以......这看起来像是2.8.0-RC1版本的错误。

相关文章: