通过中间件方法访问Laravel会话 - 会话存储未根据请求设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过中间件方法访问Laravel会话 - 会话存储未根据请求设置相关的知识,希望对你有一定的参考价值。

我在auth/register(Laravel Signup Auth)功能期间设置会话。当我尝试访问session my_user_referral_session时,我在auth/register中设置了在注册后立即执行的方法。

我收到了以下错误

RuntimeException in Request.php line 870:
Session store not set on request.

我的Routes.php文件

Route::get("/dashboard","DashboardController@dashboard");

DashboardController.php

public function __construct() {
    $this->middleware('auth');
} 

public function dashboard() {
    $request = new IlluminateHttpRequest();

    if($request->session()->has("my_user_referral_session")){
     /* Reading session data set during Laravel auth/register 
    }

enter image description here

注意:当我使用session()辅助方法时它没有任何错误,但我需要删除会话,这不是在session()辅助方法中。

注意:$ this-> middleware('auth');在构造中。我怀疑这是造成问题的原因

答案

您可以使用session()->forget('my_user_referral_session');删除会话

会话不受请求的约束。

另一答案

我觉得行

$request = new IlluminateHttpRequest();

创建一个新的“空”请求,因此那里没有会话数据。

获取会话数据的最佳方法是使用session()帮助程序:

session('my_user_referral_session')

将返回您所需的信息,如果没有该密钥的会话数据,则返回null。

以上是关于通过中间件方法访问Laravel会话 - 会话存储未根据请求设置的主要内容,如果未能解决你的问题,请参考以下文章

会话不在 Vue.js 和 Laravel 中存储数据

会话在中间件 Laravel 5 中不起作用

通过 HTTP 请求实例使用会话与在 Laravel 中使用全局会话助手之间的区别

Laravel - 未按要求设置会话存储

Laravel:如何访问 AppServiceProvider 中的会话值?

错误 500:如何通过 Laravel 自定义配置文件获取会话变量?