Laravel 5.5:会话不起作用

11 浏览
0 Comments

Laravel 5.5:会话不起作用

我正在使用Session::put(\'client\', $id);来设置一个会话值,这个值在控制器和应用程序的其他地方都持久存在,但在通过Vue调用API路由的控制器中除外。\n我已经对\"session.php\"文件进行了编辑:\'driver\' => env(\'SESSION_DRIVER\', \'database\'),并使用php artisan session:table创建了\"sessions\"表,但这些都没有改变任何内容,无论我如何创建额外的会话变量,表中都没有任何内容。\n我在控制器内尝试了$request->session()->get(\'client\')session(\'client\')Session::get(\'client\'),其中第一个实例会触发错误(请阅读下一段),或者返回空值。\n我尝试了Session::put(\'client\', $id); Session::save();,也没有任何作用。\n我在控制器内尝试了print_r( $request->session()->all() );,但出现了错误:\n

\n\"请求中没有设置会话存储。\"\n

\n我在方法的父类之上声明了\"Session\"。\n有什么想法吗?

0
0 Comments

在Laravel 5.5中,会话(Sessions)无法正常工作的原因是默认情况下,会话中间件没有在api路由组中启用。解决方法是将会话相关的中间件从web路由组移动到protected $middleware变量中,以便在每个请求中应用它们。根据 这个回答,将$middlewareGroups变量更改为:

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

这个解决方法对我来说非常有效,解决了我的问题。请把你的回答标记为正确答案。谢谢你,上帝保佑你。

0