Laravel 会话

2025年3月17日 | 阅读 3 分钟

Laravel 会话是一种跨多个用户请求存储用户信息的方式。它可以跟踪访问应用程序的所有用户。

让我们通过一个例子来理解会话。

  • 首先,我们创建一个表单,并在其上应用会话的属性。

form.blade.php

  • 现在,我们在 FormController.php 文件中定义 store() 函数。
  • 最后,我们在 web.php 中定义路由。

输出

Laravel Sessions

当我们单击提交按钮时,会出现以下屏幕

Laravel Sessions

将会话中的数据存储

要在会话中存储用户名,我们使用会话的 put() 方法,如下所示

$request->session()->put('user', $request->input('username'));

要检索会话,我们使用会话的 get() 方法,如下所示

echo $request->session()->get('user');

输出

Laravel Sessions
Laravel Sessions

全局会话助手

我们还可以使用全局会话函数,该函数在会话中存储和检索值。当会话函数传递单个参数时,它将返回键的值。如果会话传递键/值对数组,则这些值将存储在会话中。

// 从会话键中检索数据。

$data=session('key');

//为会话键提供默认值。

$data=session('key', 'default');

// 将值存储在会话键中。

session(['key'=>'value']);

让我们通过一个例子来理解。

FormController.php

输出

Laravel Sessions
Laravel Sessions

检索所有会话数据

如果我们想检索所有会话数据,那么我们可以使用 all() 方法,如下所示

$session_data = $request->session()->all();

让我们通过一个例子来理解

FormController.php

现在,我们在 web.php 文件中定义路由。

Route::get('/show','FormController@store');

输出

Laravel Sessions

删除会话

现在,我们将看到如何从会话中删除数据。我们可以使用 forget() 方法删除会话。

让我们通过一个例子来理解。

FormController.php

输出

Laravel Sessions

在上面的屏幕截图中,我们可以看到未显示 user1,因此表示已从会话中删除 user1。

要从会话中删除所有数据,我们将使用 flush() 方法。

$request->session()->flush();

让我们通过一个例子来理解 flush() 方法。

输出

Laravel Sessions

在上面的屏幕截图中,我们观察到所有数据已从会话中删除,并且它返回一个空数组。

闪存数据

当我们想将数据存储在会话中以用于当前请求时,闪存数据非常有用,因为闪存数据在下一个请求中被删除。

让我们通过一个例子来理解闪存数据。

输出

Laravel Sessions

当我们从代码中删除 flash() 函数时,代码将如下所示

当我们两次刷新页面时,第二次刷新时,会话数据将被删除。

Laravel Sessions

注意
如果想将闪存数据保留多个请求,那么我们使用 reflash() 方法。
session()->reflash();
如果想将特定数据保留多个请求,那么我们使用 keep() 方法。
$request->session()->keep('message');


下一个主题Laravel vs CodeIgniter