Laravel-在API中访问会话变量

时间:2018-09-11 15:31:02

标签: php api laravel-5 session-variables

我有一个简单的应用程序,并且希望能够更改语言。 在我的主控制器中,我有:

session(['applocale' => 'en']);
$request->session()->put('applocale','en');

我知道这两行是相同的,但是我想确保它们都不起作用。

然后我有API方法:

public function switchLang(Request $request, $lang)
{
    error_log("Current language is: " . session('applocale'));
    error_log("Current language is: " . $request->session()->get('applocale'));
}

在这里,error_log什么也没显示。

我正在关注此线程:Laravel 5.3 - How to add Sessions to API without CSRF? 并且在Debugbar中,我可以看到我的API函数遇到中间件“会话”,但会话变量不存在。

这就是我的“季节”中间件的样子:

'sessions' => [
    \Illuminate\Session\Middleware\StartSession::class,
]

它实际上同时攻击了“ api”和“会话”中间件。

有什么想法我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

这对我有效(Laravel-5.7)

首先将api中间件组更改为-

'api' => [
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    'throttle:60,1',
    'bindings',
],

App\http\kernel.php中。

参考here