它们是为当前用户保留数据的简单方法。 本教程将为您提供在 Laravel 中使用会话的基础知识。
在 Laravel 中,会话是一种存储信息的方式,可以正确处理用户发出的请求。 当用户启动 Laravel 应用程序时,会自动为该用户启动一个会话。 会话数据存储在服务器上,一个带有唯一标识符的小cookie被发送到用户的浏览器以识别会话。
您可以使用会话来存储要在多个页面或请求中使用的数据。 例如,您可以将会话用于用户身份验证或存储您希望在应用程序会话期间使用的其他信息。
要在 Laravel 中使用会话,您必须首先在文件中启用它们 config/session.php
配置。 在此文件中,可以设置与会话相关的配置参数。 例如会话的持续时间、用于存储会话数据的驱动程序以及会话数据的存储位置。
下面是一个文件的例子 sessions.php
会话持续时间 120 秒,使用存储在目录中的文件 framework/sessions
:
<?php
use Illuminate\Support\Str;
return [
'driver' => env('SESSION_DRIVER', 'file'),
'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
'encrypt' => false,
'files' => storage_path('framework/sessions'),
'connection' => env('SESSION_CONNECTION', null),
'table' => 'sessions',
'store' => env('SESSION_STORE', null),
'lottery' => [2, 100],
'cookie' => env(
'SESSION_COOKIE',
Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
),
'path' => '/',
'domain' => env('SESSION_DOMAIN', null),
'secure' => env('SESSION_SECURE_COOKIE'),
'http_only' => true,
'same_site' => 'lax',
];
您还可以使用文件中的环境变量配置会话 .env
. 例如,使用数据库session驱动,将session数据存储在session表中,对于mysql类型的DB,可以设置如下环境变量:
SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_CONNECTION=mysql
SESSION_TABLE=sessions
在 Laravel 中可以通过三种方式处理会话数据:
helper
的 global session
;Request instance
. 在所有这些情况下,您存储在会话中的数据将在同一用户发出的后续请求中可用,直到会话过期或被手动销毁。
在 Laravel 中,使用函数 Global Session Helper
这是访问框架提供的会话服务的便捷方式。 它允许您在应用程序的会话中存储和检索数据。 下面是一个如何使用 session helper
:
// Store data in the session
session(['key' => 'value']);
// Retrieve data from the session
$value = session('key');
// Remove data from the session
session()->forget('key');
// Clearing the Entire Session
session()->flush();
您还可以传递预值definite 作为函数的第二个参数 session
,如果在会话中找不到指定的键,将返回:
$value = session('key', 'default');
Session Request
在 Laravel 中,session 请求实例指的是一个代表 HTTP 请求的对象,它包含请求的相关信息,如请求方法(GET、POST、PUT 等)、请求 URL、请求头和请求体. 它还包含可用于检索和操作此信息的各种方法。
通常,您访问的实例 Session Request
通过变量 $request
在 Laravel 应用程序中。 例如,可以使用辅助函数通过请求实例访问会话 session()
.
use Illuminate\Http\Request;
class ExampleController extends Controller
{
public function example(Request $request)
{
// Store data in the session using the put function
$request->session()->put('key', 'value');
// Retrieve data from the session using the get function
$value = $request->session()->get('key');
// Check if a value exists in the session using the has function:
if ($request->session()->has('key')) {
// The key exists in the session.
}
// To determine if a value exists in the session, even if its value is null:
if ($request->session()->exists('users')) {
// The value exists in the session.
}
// Remove data from the session using the forget function
$request->session()->forget('key');
}
}
在这个例子中,变量 $request
它是类的一个实例 Illuminate\Http\Request
, 表示当前的 HTTP 请求。 功能 session
请求实例返回类的一个实例 Illuminate\Session\Store
,它提供了用于处理会话的各种函数。
Ercole Palmeri