Laravel - доступ к переменным сеанса в API - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть простое приложение, и я хочу иметь возможность менять язык.В моем главном контроллере у меня есть:

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 - Как добавить сеансы в API без CSRF? И вПанель отладки Я вижу, что моя функция API ударила промежуточное ПО «сессий», но переменных сеанса там нет.

Вот так это выглядит как мое промежуточное ПО «сезонов»:

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

На самом деле это срабатываетпромежуточное программное обеспечение api и session.

Есть идеи, что я делаю неправильно?

1 Ответ

0 голосов
/ 07 апреля 2019

Это работает для меня (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.

Ссылка здесь .

...