【问题标题】:Session accessibility in model and behavior模型和行为中的会话可访问性
【发布时间】:2015-01-15 13:27:31
【问题描述】:

我在 Cake 3.x 中工作,需要登录用户 ID。 在 Cake 2.x 中,你可以通过 session 或 AuthComponent 来获得它(有多脏)

AuthComponent::user();

但是现在在 Cake 3.x 中...我如何能够以干净的方式访问 Session 以获取用户 ID?

我找到了:http://book.cakephp.org/3.0/en/development/sessions.html 但它说从控制器、组件、视图等获取会话很容易......

编辑:一个非常肮脏的解决方案可能是获取$_SESSION 变量。 CakePHP 不推荐这个选项......所以,我更喜欢另一个解决方案:)

谢谢!

【问题讨论】:

    标签: cakephp-3.0


    【解决方案1】:

    您将需要手动传递该值或将其放入可全局访问的对象中。检查这个插件以了解如何以一种干净的方式完成它,这个插件实现的东西很可能就是你想要做的:)

    https://github.com/hmic/cakephp-blame

    编辑:我刚刚检查了该插件中的源代码,似乎它改变了我不同意的方法。这个其他插件 (https://github.com/ceeram/blame) 包含我想到的原始实现。

    它的作用是将事件附加到您的模型,以便将当前登录的用户传递给表事件,并且可以通过任何行为读取。

    【讨论】:

    • 谢谢:)。第二个网址可能会有所帮助......你会这样做吗?
    • 是的,我会使用控制器中的事件将数据传递给行为事件。这样,即使在 shell 或其他地方使用 Table 时,该行为也可以安全使用。
    【解决方案2】:

    您可以使用以下方式访问 Session:Cake\Network\Session;

    use Cake\Network\Session;
    

    例如:

    public function getSessionUser() {
        $session = new Session();
        return $session->read('Auth.User');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-05
      • 2017-12-10
      • 2011-08-27
      • 2011-02-03
      • 2014-07-31
      • 1970-01-01
      相关资源
      最近更新 更多