したがって、私は非常に典型的なユーザーモデルを持っていますが、それについて特別なことは何もありません。他のユーザーがログインしていないときに、このモデルをゲスト ユーザーとして使用できるようにしたいと考えています。
Auth にそれが含まれるように、CakePHP でゲスト アカウント、またはアカウントが設定されていない場合の何らかのデフォルトを作成する方法はありますか?
したがって、たとえば、ID は 0 に設定され、ユーザー名はゲストに設定されます。
ありがとう、ジェームズ
モデルでfind
メソッドをオーバーライドして、(内部で) 呼び出すときに、それをインターセプトして、代わりに必要なものを返すことができます。このようなもの(モデル上):User
Auth
User
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;
}
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
セッションに追加するだけです。
$this->Session->write(AuthComponent::$sessionKey, array(
'User' => array(
'id' => 0,
'username' => 'guest'
)
));