0

所以我有一个非常典型的用户模型,没什么特别的。当没有其他用户登录时,我希望能够将此模型用作来宾用户。

有没有办法在 CakePHP 中创建来宾帐户,或者在没有设置帐户时使用某种默认帐户,以便 Auth 包含它?

因此,例如,id 将设置为 0,用户名将设置为 guest,等等。

谢谢你,詹姆斯

4

3 回答 3

3

您可以在模型中覆盖该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;
}
于 2012-04-28T02:33:58.180 回答
1

只需将其添加到会话中。

$this->Session->write(AuthComponent::$sessionKey, array(
  'User' => array(
    'id' => 0,
    'username' => 'guest'
   )
));
于 2012-04-28T02:35:45.917 回答
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 回答