3

Cake2.2でやらなければならないことが2つあります。すべてのページで誰かがログインしていることを確認する必要があります。次に、そのユーザーIDをUIDという名前の定数として保存する必要があります。

各コントローラーを使用してユーザーを確認する必要はありません。自動的に実行したいので、当然AppControllerに移動してBeforeFilterを試してみます。セッションが初期化されていないようですので、それをスクラッチしてafterFilterを試してみますが、それ(およびBeforeRender)は実際には私がやりたいことではありません。ログインしていない場合にページリクエストで発生するのを防ぐことができる単一のことを望んでいません。私が知る限り、ブートストラップも答えではありませんでした。

では、ユーザーがログインしているかどうかを確認し、同時に残りのアプリケーションの定数を定義するにはどうすればよいですか?

4

1 に答える 1

4

beforeFilter()AppControllerのメソッドでユーザー セッション チェック メソッドを呼び出すことによって、同じことを行うことができます。コードは次のようになります。

<?php
App::uses('Sanitize', 'Utility');
App::uses('Controller', 'Controller');

class AppController extends Controller
{

public $components = array(
'Session',
    'RequestHandler'
);

public $helpers = array('Html', 'Form', 'Session', 'Js' => array('Jquery'), 'Text');
public $uses = array('User');

public function beforeFilter()
{
    if($this->Session->check('User.id'))
    {
        $this->set('logged_in', true);
        $this->set('username', trim($this->Session->read('User.first_name'). ' '. $this->Session->read('User.last_name')));            
    }
    else
    { 
        $this->set('logged_in', false);
    }
}    
/*.......... Rest of your code ..............*/
}

うまくいかない場合は、お気軽にお問い合わせください。

于 2012-08-07T04:19:42.033 に答える