所以我有一个非常典型的用户模型,没什么特别的。当没有其他用户登录时,我希望能够将此模型用作来宾用户。
有没有办法在 CakePHP 中创建来宾帐户,或者在没有设置帐户时使用某种默认帐户,以便 Auth 包含它?
因此,例如,id 将设置为 0,用户名将设置为 guest,等等。
谢谢你,詹姆斯
您可以在模型中覆盖该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;
}
只需将其添加到会话中。
$this->Session->write(AuthComponent::$sessionKey, array(
'User' => array(
'id' => 0,
'username' => 'guest'
)
));
在 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