会话不在 Vue.js 和 Laravel 中存储数据

Posted

技术标签:

【中文标题】会话不在 Vue.js 和 Laravel 中存储数据【英文标题】:Session not storing data in Vue.js & Laravel 【发布时间】:2019-07-18 11:55:18 【问题描述】:

我正在尝试将数据存储到来自 vue.js 的每个 AJAX 调用的 Laravel 会话中。

我想使用会话在 Laravel 购物车中添加产品,但它不存储任何类型的会话数据。我还添加了网络中间件,但没有运气。

api.php

<?php
    Route::group(['namespace' => 'Api'],function()
        Route::resource('product','ProductController');
        Route::post('add-to-cart','ProductController@addToCart');
    );

ProductController.php

<?php
    public function addToCart(Request $request)
    $product = $request->all();

    $cart = Session::get('cart');
    $cart[$product['id']] = $product;
    Session::push('cart', $cart);

    return Response::json(['success' => true, 'cart_items' => Session::get('cart')]);

ProductListComponene.vue

addToCartProduct(product)
    fetch('api/add-to-cart',
        method: 'post',
        body:JSON.stringify(product),
        headers:
            'content-type':'application/json'
        
    )
    .then(res => res.json())
    .then(res => 
        console.log(res);
    )
    .catch(err => console.log(err));
                 

【问题讨论】:

【参考方案1】:

您的所有路由都在api 中间件中注册,如果您检查app/Http/Kernel.php 文件,您会看到它没有注册StartSession 中间件。因此,您必须先启动会话才能将数据保存到会话中。

【讨论】:

将此\Illuminate\Session\Middleware\StartSession::class, 添加到中间件中,现在可以正常工作了。谢谢。 也很高兴看看我的这个答案,与会话驱动程序***.com/a/53253184/2693543

以上是关于会话不在 Vue.js 和 Laravel 中存储数据的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 如何在会话 Laravel 中存储额外的数据/值

Vue-Router 不在单页应用程序中重新路由(Vue/Laravel)

LARAVEL + Vue.js:使用刀片在 MPA 中显示整个页面的 vue.js 组件,对 SEO 不友好

Laravel + Vue JS:从数据库中获取/存储 Eloquent 模型的值

Laravel + Vue.js MPA/SPA 混合结构的建议和思考

Shopify App-bridge 会话令牌在使用 vue.js 和 Axios 时遇到一些问题?