Laravel会话存储未在请求上设置

8 浏览
0 Comments

Laravel会话存储未在请求上设置

我正在开发一个小网站,但是遇到了session的问题。当我尝试登录或进行AJAX调用时,出现了以下RuntimeException错误:\n

RuntimeException in Request.php line 758: Session store not set on request.
in Request.php line 758
at Request->session() in VerifyCsrfToken.php line 87
at VerifyCsrfToken->tokensMatch(object(Request)) in VerifyCsrfToken.php line 49
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Language.php line 38
at Language->handle(object(Request), object(Closure))
at call_user_func_array(array(object(Language), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 122
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
at Kernel->handle(object(Request)) in index.php line 54

\n请问我做错了什么?提前感谢。

0
0 Comments

Laravel Session存储未在请求上设置的问题的出现原因以及解决方法

今天在使用Laravel开发项目时,遇到了一个问题,提示为"Laravel Session存储未在请求上设置"。经过一番调查和尝试,我找到了出现这个问题的原因,并成功解决了它。

问题的原因是由于Laravel框架在处理会话时,尝试读取或写入会话数据时没有找到有效的会话存储位置。这可能是由于会话存储文件夹的权限问题导致的。

为了解决这个问题,我首先尝试了以下解决方法:

1. 删除会话存储文件夹中的所有内容。会话存储文件夹位于storage/framework/sessions目录下。可以通过运行以下命令来删除该文件夹中的所有内容:

rm -rf storage/framework/sessions/*

2. 确保会话存储文件夹具有写入权限。可以通过运行以下命令来设置文件夹的写入权限:

chmod -R 777 storage/framework/sessions

然而,尽管我尝试了上述解决方法,问题仍然没有解决。我仍然收到了RuntimeException的错误提示。尽管如此,我仍然感谢这些解决方法,因为它们可能对其他人有用。

为了进一步解决这个问题,我继续进行了一些研究,并发现了另一个可能的解决方法。这个方法是在Laravel应用程序的config/session.php文件中进行配置更改。在这个文件中,我找到了一个名为'driver'的配置选项,它指定了会话驱动程序的类型。默认情况下,这个选项的值是'file',表示使用文件驱动程序来存储会话数据。然而,由于某种原因,文件驱动程序在我的情况下似乎无法正常工作。

为了解决这个问题,我将'driver'配置选项的值更改为'database',表示使用数据库驱动程序来存储会话数据。这可以通过以下步骤完成:

1. 打开config/session.php文件。

2. 找到'driver'配置选项,并将其值更改为'database'

3. 保存并关闭文件。

通过这个配置更改,我再次尝试运行应用程序,并发现这次问题得到了解决。我不再收到"Laravel Session存储未在请求上设置"的RuntimeException错误提示。

当遇到"Laravel Session存储未在请求上设置"的问题时,可以首先尝试删除会话存储文件夹中的所有内容,并确保该文件夹具有写入权限。如果这些解决方法仍然无效,可以尝试将会话驱动程序更改为数据库驱动程序来存储会话数据。希望这篇文章对于遇到相同问题的开发者们能够有所帮助!

0
0 Comments

问题原因:在使用Laravel 5.2及以上版本时,如果需要使用会话状态、CSRF保护等功能,需要使用web中间件。而在5.1版本中,可以直接使用全局中间件。

解决方法:将路由组的中间件修改为web。

具体代码如下:

Route::group(['middleware' => ['web']], function () {
    // routes here
});

对于使用5.1版本的情况,可以尝试创建一个全新的Laravel 5.1项目,并导入所有已生成的文件来解决该问题。这个项目可能是由多个开发人员共同开发而变得混乱,但通过这种方式可以解决问题。感谢帮助,但这是一个特殊情况,因此不能选择正确答案,尽管您的答案可能适用于其他与该异常相关的问题。

0
0 Comments

问题的原因是在使用Laravel时,会出现“Laravel Session store not set on request”的错误。解决方法是在app->http->middleware->VerifyCsrfToken文件中,将需要排除不进行CSRF验证的路由添加到数组中。同时,还需要按照Cas Bloem的方法,在routes.php文件中将这些路由放置在不同的部分。这样做可以解决该问题。需要注意的是,该解决方法仅适用于Laravel 5.2版本,可能不适用于其他版本。

0