kh.*_*tab 5 php cakephp cakephp-3.0
您好我在CakePHP 3项目上工作..
我想从default.ctp显示已登录用户的用户名,所以我试过这个:
//in default.ctp
$user = $this->Session->read('Auth.User');
if(!empty($user)) {
echo 'Hi ', $user['user_name'];
}
Run Code Online (Sandbox Code Playgroud)
它不起作用,我发现其他解决方案告诉将当前用户从AppController放入会话中它也不起作用这是它:
// in AppController
function beforeFilter(){
$user = $this->Session->read('Auth.User');
$this->set('username', $user['username']);
}
Run Code Online (Sandbox Code Playgroud)
并在default.ctp中:
<?=$username?>
Run Code Online (Sandbox Code Playgroud)
有人能帮我吗 ?
访问会话是错误的方法.CakePHP中的auth系统可以处理用户的不同来源,例如,会话不适用于无状态身份验证系统.
因此,正确的方法是从抽象的身份验证系统中获取用户,而不是直接从会话中读取它.在会话密钥更改的情况下,会话方法也会搞砸.
在AppController中只需添加:
public function beforeRender() {
$this->set('user', $this->Auth->user());
}
Run Code Online (Sandbox Code Playgroud)
然后访问视图中的$ user var.我的插件甚至包含一个帮助程序来处理视图中用户数据的常见任务.
<?php $session = $this->request->session(); // less than 3.5
// $session = $this->request->getSession(); // 3.5 or more
$user_data = $session->read('Auth.User');
if(!empty($user_data)){
print_r($user_data);
}?>
Run Code Online (Sandbox Code Playgroud)
试试这个希望它有帮助..
| 归档时间: |
|
| 查看次数: |
1893 次 |
| 最近记录: |