【问题标题】:Laravel5 - can't get Sessions workingLaravel5 - 无法让会话工作
【发布时间】:2016-12-31 09:11:15
【问题描述】:

我正在尝试 Laravel 5,但无法让 Session 正常工作。我在 Controller 里面,这是我在新设置和新控制器上所做的:

\Request::session()->put('test', 'x');
var_dump(\Request::session()->get('test'));

只要正在编写会话,这就会起作用,并且一旦您评论第一行,会话值就会在下一个请求中消失。

同样,我尝试了 Session:: 而不是 Request::session(),结果仍然相同。

【问题讨论】:

  • 您使用的是哪个会话驱动程序?
  • 文件。但我也尝试过数组、apc 等
  • array 不会工作,因为它不是持久的。
  • 您是否尝试过将Request::session()->get('test') 保存到另一个变量并转储该变量?
  • 你如何检查你的会话是否有那个变量?

标签: php session laravel-5


【解决方案1】:

感谢 2 个帖子,我自己找到了解决方案:

Laravel 5 - session doesn't work

Session not working in middleware Laravel 5


  1. 毕竟 OMG 围绕 Laravel 的嗡嗡声是如此简单,让我们在雨中跳舞吧! PHP 中最简单的东西,例如$_SESSION,现在需要\Request::session(),您需要user Request。那么你需要 2 种不同的方法来保存并从中获取值,而不是直接 $_SESSION['x'] !!

  2. Laravel(天才超级外星技术)将会话保存在 TerminableMiddleware 而不是现场,但在 https://laravel.com/docs/5.2/session 上没有提及。所以你需要明确地调用Session::save()!!

这样,5 行来完成 1 行 $_SESSION 的工作!

【讨论】:

  • Laravel Session 与 $_SESSION 无关。
  • 您是否阅读了本页的开头句? laravel.com/docs/5.2/session 它准确地说明了 $_SESSION 的用途!
  • 如果它与 $_SESSION 没有任何关系,他们没有在指南的那一页上提到TerminableMiddleware?!
  • 第一:寒意!第二:$_SESSION首先是一个超级全局变量。 Laravel Session 不仅仅是将数据保存到这个变量中。
  • Laravel 为 php 中应该简单的所有事情做了更多的工作。 #OverEngineering!!
【解决方案2】:

如果您使用的是 5.2,请确保您的控制器通过路由由“网络”中间件组管理

$route->group([ 'middleware' => ['web'] ....  

或者通过在你的控制器构造方法中实例化它;

$this->middleware('web');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 2015-05-10
    • 2018-11-22
    相关资源
    最近更新 更多