模型和行为中的会话可访问性

时间:2015-01-15 13:27:32

标签: cakephp-3.0

我在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不推荐这个选项...所以,我提出另一个解决方案:)

谢谢!

2 个答案:

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