1

私はcakephpsAuthComponentを使用して自分のサイトにログインしています。ユーザー名とパスワードを正しく入力すると、ログインします。loggedIn()を使用してログインしていることを確認すると、trueを返すのに非常に一貫性がありません。これは、後で使用するためにloggedIn()を変数に設定したAppControllerです。

<?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; ?>

そして、これが私のlogin()です:

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');
        }
    }

}

$logged_inを使用する代わりに$this->Auth-> loggedIn()を呼び出そうとしましたが、AuthHelperが見つからないというエラーが表示されます。私の質問に答えるために必要な情報が他にあるかどうか教えてください。

4

1 に答える 1

1

これらの行を beforeRender() に移動します

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

それ以外に、コードに問題はないようです。Auth->login() が常に true を返すというコメントは、 login() メソッドに引数を渡した場合にのみ発生しますが、表示するコードにはありません。

于 2012-08-17T10:26:58.260 に答える