【问题标题】:Laravel session key is null after put in session放入会话后,Laravel 会话密钥为空
【发布时间】:2015-02-14 18:43:54
【问题描述】:

我有一个有线问题。我在会话中放入了一些字符串/对象,当我想得到它时它不存在。

这是代码:

class CartController extends \BaseController
{

    public function index()
    {
        return Session::all(); // items is not there
    }

    public function store()
    {
        Session::put('items', Input::get('items'));
    }

}

角度:

this.saveItemsToSession = function() {
    $http.post('cart', {
      items: 'test even string'
    });
  };

什么会导致这个问题?

似乎 Session 不起作用。 这种方法有效:

session_start();
class CartController extends \BaseController
{

    public function index()
    {
        return $_SESSION['items'];
    }

    public function store()
    {
        $_SESSION['items'] = Input::get('items');
    }

}

【问题讨论】:

  • 如果把静态数据放到session里面,行吗? Session::put('items', 'test string');
  • 不,但如果我在 HomeController 中这样做,它的工作原理
  • 您可以编辑您的问题并为cart 添加路线吗?
  • 我找到了解决方案,但是很连线,我需要在 CartController 中添加 session_start,你为什么这么认为?
  • 您使用的是什么会话驱动程序? app/config/session.php

标签: php angularjs session laravel


【解决方案1】:

来自 laravel 文档:https://laravel.com/docs/master/routing

任何未放在 web 中间件组内的路由都不会有 访问 会话 和 CSRF 保护,因此请确保任何路由 需要将这些功能放在组内。通常,您将 将您的大部分路线放在该组中:

Route::group(['middleware' => ['web']], function () {
     //all routes
});

把你所有的路由放在中间件里面,你的问题就解决了。

【讨论】:

    【解决方案2】:
        Session::all()
    

    返回所有会话变量的数组,同时

        $_SESSION['items']
    

    'items' 的返回会话,并且两个输出都不同。获得

        $_SESSION['items']
    

    值,这里有几种方法:

        Session::all()['items']
    

        Session::get('items')
    

    【讨论】:

      【解决方案3】:

      您是否在使用子域?

      【讨论】:

        猜你喜欢
        • 2020-05-30
        • 1970-01-01
        • 2021-09-02
        • 2017-02-14
        • 2014-04-02
        • 2018-03-17
        • 1970-01-01
        • 2013-04-28
        • 2012-06-26
        相关资源
        最近更新 更多