会话未在laravel中持续

会话未在laravel中持续,laravel,laravel-5,Laravel,Laravel 5,我在laravel中使用会话,但当我在controller中获得会话时,它就不起作用了 web.php Route::get('locale/{locale}',function ($locale){ //Session::put('locale',$locale); session(['locale' => $locale]); Session::save(); return redirect()->back(); }); 本地化.php publ

我在laravel中使用会话,但当我在controller中获得会话时,它就不起作用了

web.php

Route::get('locale/{locale}',function ($locale){
    //Session::put('locale',$locale);
    session(['locale' => $locale]);
    Session::save();
    return redirect()->back();
});
本地化.php

public function handle($request, Closure $next)
{
    if(\Session::has('locale')){
        \App::setLocale(\Session::get('locale'));
        session(['locale' => \Session::get('locale')]);
        \Session::save();
    }

    return $next($request);
}
public function handle($request, Closure $next)
{


    if(\Session::has('locale')){
        \App::setLocale(\Session::get('locale'));
        session(['locale' => \Session::get('locale')]);
        //dd(session());
        \Session::save();

    }

    return $next($request);
}
Kernel.php

protected $middleware = [
    \App\Http\Middleware\CheckForMaintenanceMode::class,
    \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
    \App\Http\Middleware\TrimStrings::class,
    \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    \App\Http\Middleware\TrustProxies::class,
];

/**
 * The application's route middleware groups.
 *
 * @var array
 */
protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
        \App\Http\Middleware\Localization::class,
    ],

    'api' => [
        \App\Http\Middleware\EventLogMiddle::class,
        'throttle:600,1',
        'bindings',
    ],
];
MachCtrl.php(扩展控制器)

我把会话保存在路由器和中间件中,它不工作

但当我将会话放入控制器时,它是工作。代码如下:

public function index()
{
    session(['locale' => 'en']);
    $lang = session('locale');
    $config = json_encode([
        "table" => "Machine_list",
        "title" => "machine list",
        "rows" => 20,
        "column" => [
            "Machine_id", "VM_name", "Machine_location","IP_address", 
            "Network_status", "Current_status"
        ],
        "CUDP" => "0111",
        "CreateRoute" => route('machine.create'),
        "DeleteRoute" => route('machine.destroy'),
        "UpdateRoute" => route('machine.editInfo'),
        "locale" => $lang,
    ]);

    return view('table.show')->with(['config' => $config, 'lang' => 
                                                           $lang]);
}
我真的很想知道在我的项目中发生了什么。 谢谢

编辑: 我在代码中使用dd(session()):

-web.php

Route::get('locale/{locale}',function ($locale){
    Session::put('locale',$locale);
    Session::save();
    dd(session());
    return redirect()->back();
});
结果:

-本地化.php

public function handle($request, Closure $next)
{
    if(\Session::has('locale')){
        \App::setLocale(\Session::get('locale'));
        session(['locale' => \Session::get('locale')]);
        \Session::save();
    }

    return $next($request);
}
public function handle($request, Closure $next)
{


    if(\Session::has('locale')){
        \App::setLocale(\Session::get('locale'));
        session(['locale' => \Session::get('locale')]);
        //dd(session());
        \Session::save();

    }

    return $next($request);
}
结果:

-MachCtrl.php

public function index()
{
    dd(session());
    $lang = session('locale');
    $config = json_encode([
        "table" => "Machine_list",
        "title" => "machine list",
        "rows" => 20,
        "column" => [
            "Machine_id", "VM_name", "Machine_location","IP_address", 
            "Network_status", "Current_status"
        ],
        "CUDP" => "0111",
        "CreateRoute" => route('machine.create'),
        "DeleteRoute" => route('machine.destroy'),
        "UpdateRoute" => route('machine.editInfo'),
        "locale" => $lang,
    ]);

    return view('table.show')->with(['config' => $config, 'lang' => 
                                                            $lang]);
}

结果:

尝试使用不同的会话驱动程序将您的问题稍微四舍五入


编辑:很抱歉,我还不能发表评论,尝试使用不同的会话驱动程序对您的问题进行一点取整


编辑:对不起,我还不能发表评论,我检查了我的工作代码。我将整个周期设置为:

语言中间件:

在my middleware Kernel.php中:

在途中:


我检查了我的工作代码。我将整个周期设置为:

语言中间件:

在my middleware Kernel.php中:

在途中:


我添加了dd(session()),但仍然无法解决我的问题。@bookgirl创建一个简单的路由来测试您的会话。不要dd()整个会话,dd键-
会话('locale')
以及save
会话(['locale'=>$locale])我添加了dd(session()),但我仍然无法解决我的问题。@bookgirl创建一个简单的路由来测试您的会话。不要dd()整个会话,dd键-
会话('locale')
以及save
会话(['locale'=>$locale])我添加了dd(会话()),但仍然无法解决我的问题:(我不知道如何更改不同的会话驱动程序。:(很抱歉,响应速度太慢。请转到.env并尝试将会话切换到文件或cookie。(即使是数据库,但您必须为此生成迁移,并在解决问题后恢复)。我添加了dd(session()),但仍然无法解决我的问题。:)(我不知道如何更改不同的会话驱动程序。:(很抱歉,响应速度太慢。请转到.env并尝试将会话切换到文件或cookie。(即使是数据库,但您必须为此生成迁移,并在解决问题后恢复)。
protected $middlewareGroups = [
    'web' => [
         \Illuminate\Session\Middleware\StartSession::class,
         //...
         \App\Http\Middleware\Language::class,
    ]
];
Route::get('locale/{locale}',function ($locale){
     session(['user_locale' => $locale]);
});