根据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');
答案 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');