dqc42632 2018-07-25 23:09
浏览 79

会话无法在vue + laravel页面上运行

I am making a web page with vue single file component, and laravel as back-end the page is multi-lenguage, i send the language selected by the user with ajax and save it to the session, so i can setLocale(session()->get('lang;)) in the AppServiceProvider, i need laravel to return some errors, like authorizations, validations, etc. The problem is that the session is not being saved.

if i return session()->get('lang') in the call where i am saving it, it returns what i am sending. but if i return session()->get('lang') in my next call to another controller, it returns null

i am using the file driver, change it to cookie but it did not work either.

how can i make the session work?

As requested

I am using the laravel mix for copiling vue, as far as i know i am not using any proxy, i am running it on local for now

My routes are on the api file so i guess it uses the api middleware default

Route::namespace('Home')->group(function(){
    Route::get('home','HomeController@getIndex');
    Route::get('home/change-lang','LangController@changeLang');

    Route::get('news/{type}','NewsController@getNews');

});

The controller

<?php

namespace App\Http\Controllers\Home;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class LangController extends Controller
{
    //
    public function changeLang(Request $request)
    {
        app()->setLocale($request->input('lang'));
        session(['lang' => $request->input('lang')]);
        return response()->json([
            'lang' => app()->getLocale()
        ]);
    }
}

AppServiceProvider

<?php

namespace App\Providers;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
        app()->setLocale(session()->has('lang') ? session()->get('lang') : 'es');
    }
}

the route configuration in the front is

const router = new VueRouter({
    mode: 'history',
    routes: [
        {
            path: '/rdjvzla/public/home/',
            name: 'home',
            component: Home
        },
        {
            path: '/rdjvzla/public/home/news/:type',
            name: 'news',
            component: News
        }
    ]
});

and i send the request like this

this.$axios.get(this.$asset('api/home/change-lang'),{
    params : {
        lang : this.$i18n.locale
    }
})
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 docker里部署springboot项目,访问不到扬声器
    • ¥15 netty整合springboot之后自动重连失效
    • ¥15 悬赏!微信开发者工具报错,求帮改
    • ¥20 wireshark抓不到vlan
    • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
    • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
    • ¥15 stata安慰剂检验作图但是真实值不出现在图上
    • ¥15 c程序不知道为什么得不到结果
    • ¥15 键盘指令混乱情况下的启动盘系统重装
    • ¥40 复杂的限制性的商函数处理