php - Laravel - 在 API 中访问 session 变量

标签 php api laravel-5 session-variables

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

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 函数已命中中间件“ session ”,但 session 变量不存在。

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

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

它实际上同时命中了“api”和“session”中间件。

知道我做错了什么吗?

最佳答案

这对我有用 (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 .

关于php - Laravel - 在 API 中访问 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52279468/

相关文章:

Laravel 迁移更改使列可以为空

php - mysql中的搜索查询优化

php - mysql 如何在一行中显示每个投资组合、股票的值

json - 允许对象在 swagger 中具有 oneOf 某些类型

c++ - 帮助确定所需的窗口对话框资源类型

php - 我如何将日期时间分成不同的部分?

php - 如何阻止 URL 查询字符串重复?

php - robots.txt 不允许空白 PHP 页面和包含?

ios - 重用 AFHTTPRequestOperation Manager 的优缺点是什么?

Laravel spatie/laravel-permissions 命名约定