0

したがって、私は非常に典型的なユーザーモデルを持っていますが、それについて特別なことは何もありません。他のユーザーがログインしていないときに、このモデルをゲスト ユーザーとして使用できるようにしたいと考えています。

Auth にそれが含まれるように、CakePHP でゲスト アカウント、またはアカウントが設定されていない場合の何らかのデフォルトを作成する方法はありますか?

したがって、たとえば、ID は 0 に設定され、ユーザー名はゲストに設定されます。

ありがとう、ジェームズ

4

3 に答える 3

3

モデルでfindメソッドをオーバーライドして、(内部で) 呼び出すときに、それをインターセプトして、代わりに必要なものを返すことができます。このようなもの(モデル上):UserAuthUser

public function find($conditions, $fields, $order=null, $recursive=false) {
    $user = parent::find($conditions, $fields, $order, $recursive);
    if(empty($user)) {
        // No "real" user found, let's create "guest"
        $user = array(
            'User' => array(
                'id' => 0,
                'username' => 'guest'
                // add other fields as needed
            )
        );
    }
    return $user;
}
于 2012-04-28T02:33:58.180 に答える
1

AppController で:

public function beforeFilter() {    
    if(!$this->Auth->loggedIn()){
        $this->loadModel('User');
        $user = $this->User->findById(0); //Guest user id
        $this->Auth->login($user['User']);
    }
}

これは CakePHP 2.2 で問題なく動作します。Web インターフェイス経由でゲストのアクセス許可を含むアクセス許可を構成できます: http://www.alaxos.net/blaxos/pages/view/plugin_acl_2.0

于 2012-07-05T15:08:45.887 に答える
1

セッションに追加するだけです。

$this->Session->write(AuthComponent::$sessionKey, array(
  'User' => array(
    'id' => 0,
    'username' => 'guest'
   )
));
于 2012-04-28T02:35:45.917 に答える