Cakephp $ this-> Auth->登录In()并不总是有效

时间:2012-08-16 18:18:09

标签: cakephp-2.1

我正在使用cakephps Auth Component登录我的网站。当我正确输入我的用户名和密码时,它会登录我。然后当我使用loggedIn()检查我是否登录时,返回true是非常不一致的。 这是我的AppController,我将loggedIn()设置为稍后要使用的变量:

<?php

App::uses('Controller', 'Controller');
App::uses('File', 'Utility');
App::uses('AuthComponent', 'Component');

class AppController extends Controller {
    public $components = array(
        'Session',
        'Auth'=>array(
            'loginRedirect'=> array('controller'=>'users', 'action'=>'index'),
            'logoutRedirect'=> array('controller'=>'users', 'action'=>'index'),
            'authError' =>"You can't access that page",
            'authorize'=> array('Controller')
        )

    );
    //determines what logged in users have access to
    public function isAuthorized($user){
        return true;
    }
    //determines what non-logged in users have access to
    public function beforeFilter(){
        $this->Auth->allow('index','view');
        $this->set('logged_in', $this->Auth->loggedIn());
        $this->set('current_user', $this->Auth->user());
    }


}

这里有一些我使用'logged_in'

的代码
<?php if($logged_in): ?> //this only returns true some of the time
      Welcome <?php echo $current_user['username']; ?>. <?php echo  $this->Html->link('Logout', array('controller'=>'users', 'action'=>'login')); ?>

<?php else: ?>
   <?php echo  $this->Html->link('Login', array('controller'=>'users', 'action'=>'logout')); ?>
<?php endif; ?>

这是我的登录信息():

public function login(){
    if($this->request->is('post')){
        if($this->Auth->login()){  //this returns true every time
            $this->redirect($this->Auth->redirect());

        }else{
            $this->Session->setFlash('Your username and/or password is incorrect');
        }
    }

}

我尝试过调用$ this-&gt; Auth-&gt; loggedIn()而不是使用$ logged_in,但是我收到了无法找到Auth Helper的错误。 如果有更多信息需要回答我的问题,请告诉我。

1 个答案:

答案 0 :(得分:1)

将这些行移至beforeRender()

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

除此之外,您的代码似乎没有任何问题。 Auth-> login()总是返回true的注释只会在你将任何参数传递给login()方法时发生,而你所显示的代码却没有。