有没有一种简单的方法可以从 CakePHP 的视图中获取 AuthComponent 用户数据?
Posted
技术标签:
【中文标题】有没有一种简单的方法可以从 CakePHP 的视图中获取 AuthComponent 用户数据?【英文标题】:Is there an easy way to get AuthComponent user data from a view in CakePHP? 【发布时间】:2009-05-30 06:38:21 【问题描述】:根据 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 使用的模型(例如,您可能有一个“persons”表而不是“users”),那么您需要使用类似的东西:
$persondata = $session->read('Auth.Person');
【问题讨论】:
【参考方案1】:实际上,这些信息很容易从会话中获得。您使用会话助手来获取它。我相信正确的语法是:
$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');
【讨论】:
谢谢。这正是我想要的。 你应该在 CakePHP 2.x 中使用这个语法 $userdata = $this->session->read('Auth.User'); $username = $this->session->read('Auth.User.username'); 注意:至少在Cakephp 2.7 中是不行的,它必须是$this->Session .... session 中的s 必须是大写的【参考方案2】:查看 CakePHP 手册中的 AuthComponent-Methods....
您可以在用户通过 $this->Auth->User() 从会话登录后访问用户信息。因此,如果您想要用户名,只需在控制器中使用它即可。
$this->set('username', $this->Auth->User('username'));
您现在可以在视图中使用 $username。
【讨论】:
【参考方案3】:在你的 AppController 中添加一个方法
function beforeFilter()
$ath = $this->Auth->user();
$this->set('userDetails', $ath['User']);
然后您可以通过 $userDetails 从您的视图和/或布局中访问它
【讨论】:
【参考方案4】:要在视图中访问 Auth 变量,只需这样做:
echo $session->read('Auth.User.id');【讨论】:
以上是关于有没有一种简单的方法可以从 CakePHP 的视图中获取 AuthComponent 用户数据?的主要内容,如果未能解决你的问题,请参考以下文章