Laravel 5.5:会话不起作用
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有什么想法吗?
在Laravel 5.5中,会话(Sessions)无法正常工作的原因是默认情况下,会话中间件没有在api路由组中启用。解决方法是将会话相关的中间件从web路由组移动到protected $middleware
变量中,以便在每个请求中应用它们。根据 这个回答,将$middlewareGroups
变量更改为:
'api' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Session\Middleware\StartSession::class, 'throttle:60,1', 'bindings', ],
这个解决方法对我来说非常有效,解决了我的问题。请把你的回答标记为正确答案。谢谢你,上帝保佑你。