我在Cake 3.x中工作,需要登录用户ID。 在Cake 2.x中,您可以通过会话或AuthComponent(多么脏)
获得此功能AuthComponent::user();
但是现在在Cake 3.x中......我怎么能以干净的方式访问Session以获取用户ID?
我发现:http://book.cakephp.org/3.0/en/development/sessions.html 但它表示从控制器,组件,视图等方面获取会话很容易......
编辑:非常非常脏的解决方案可能是获取$_SESSION
变量。 CakePHP不推荐这个选项...所以,我提出另一个解决方案:)
谢谢!
答案 0 :(得分:2)
您需要手动传递值或将其置于可全局访问的对象中。检查这个插件,以了解如何以一种干净的方式完成它,这个插件实现的内容很可能是你试图做的事情:))
https://github.com/hmic/cakephp-blame
编辑:我刚检查了该插件中的源代码,似乎它改变了我不同意的方法。这个其他插件(https://github.com/ceeram/blame)包含我想到的原始实现。
它的作用是将事件附加到模型,以便将当前登录的用户传递给表事件,并且可以通过任何行为读取。
答案 1 :(得分:1)
您可以使用:Cake\Network\Session;
use Cake\Network\Session;
例如:
public function getSessionUser() {
$session = new Session();
return $session->read('Auth.User');
}