有没有一种简单的方法从CakePHP中的视图中获取AuthComponent用户数据?

时间:2009-05-30 06:38:22

标签: php authentication cakephp

根据cakebook section on the Auth component,我可以使用以下用户控制器实现简单身份验证:

class UsersController extends AppController {

    var $name = 'Users';    
    var $components = array('Auth'); // Not necessary if declared in your app controller

    /**
     *  The AuthComponent provides the needed functionality
     *  for login, so you can leave this function blank.
     */
    function login() {
    }

    function logout() {
        $this->redirect($this->Auth->logout());
    }
}

我希望能够在我的观点中得到以下内容:

<?php
   $username = $auth->user('username');
   echo "Welcome " . $username;
?>

是否有一种简单的方法可以执行此操作,还是需要覆盖登录功能并将用户名存储到会话中?

更新

Alexander's answer正是我想要的。但是,我会添加以下内容以防其他人像我一样感到困惑。

我花了一段时间才明白,如果你改变Auth使用的模型(例如,你可能有'人'表而不是'用户'),那么你需要使用类似的东西:

$persondata = $session->read('Auth.Person');

4 个答案:

答案 0 :(得分:12)

实际上,这些信息可以从会话中轻松获得。您使用会话助手来抓取它。我相信正确的语法是:

$userdata = $session->read('Auth.User');
$username = $session->read('Auth.User.username');

编辑:

对于CakePHP 2.X,语法为:

$userdata = $this->session->read('Auth.User');
$username = $this->session->read('Auth.User.username');

答案 1 :(得分:3)

查看CakePHP手册中的AuthComponent-Methods ....

用户通过$ this-&gt; Auth-&gt; User()从会话登录后,您可以访问用户信息。因此,如果您想要用户名,只需在控制器中使用它即可。

$ this-&gt; set('username',$ this-&gt; Auth-&gt; User('username'));

您现在可以在视图中使用$ username。

答案 2 :(得分:2)

在AppController中添加方法

function beforeFilter() {
$ath = $this->Auth->user();
$this->set('userDetails', $ath['User']);
}

然后您可以通过$ userDetails

从您的视图和/或布局中访问它

答案 3 :(得分:0)

要在视图中访问Auth vars,请执行以下操作:

echo $session->read('Auth.User.id');