货物

什么是 Laravel 中的会话,配置和使用示例

Laravel 会话允许您存储信息,并在 Web 应用程序的请求之间交换信息。 

它们是为当前用户保留数据的简单方法。 本教程将为您提供在 Laravel 中使用会话的基础知识。

什么是 Laravel 会话

在 Laravel 中,会话是一种存储信息的方式,可以正确处理用户发出的请求。 当用户启动 Laravel 应用程序时,会自动为该用户启动一个会话。 会话数据存储在服务器上,一个带有唯一标识符的小cookie被发送到用户的浏览器以识别会话。

您可以使用会话来存储要在多个页面或请求中使用的数据。 例如,您可以将会话用于用户身份验证或存储您希望在应用程序会话期间使用的其他信息。

Laravel 中的会话配置

要在 Laravel 中使用会话,您必须首先在文件中启用它们 config/session.php 配置。 在此文件中,可以设置与会话相关的配置参数。 例如会话的持续时间、用于存储会话数据的驱动程序以及会话数据的存储位置。 

该文件具有以下配置选项:
  • 司机:指定会话前驱动程序defi使用完毕。 Laravel 支持多种会话驱动程序:file、cookie、database、apc、memcached、redis、dynamodb 和 array;
  • 一生:指定会话必须被视为有效的分钟数;
  • 关闭时过期:如果设置为true,当用户浏览器关闭时session将过期;
  • 加密: true 表示框架将在存储会话数据之前对其进行加密;
  • :如果使用文件会话驱动,该选项指定文件存储位置;
  • 地都: 如果使用了数据库会话驱动,这个选项指定要使用的数据库连接;
  • : 如果使用了数据库会话驱动,这个选项指定用来存储会话数据的数据库表;
  • 抽奖: 一个值数组,用于随机选择一个session ID cookie值;
  • 饼干:此选项指定将用于存储会话 ID 的 cookie 的名称。 路径、域、安全、http_only 和 same_site 选项用于配置会话的 cookie 设置。

下面是一个文件的例子 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 会话设置

在 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

创新通讯
不要错过有关创新的最重要新闻。 注册以通过电子邮件接收它们。

Articoli最新回应

卡塔尼亚综合诊所的 Apple 观众对增强现实进行创新干预

卡塔尼亚综合诊所使用 Apple Vision Pro 商业查看器进行了眼部整形手术……

3 2024五月

儿童涂色页的好处 - 适合所有年龄段的魔法世界

通过着色培养精细运动技能可以帮助孩子们为写作等更复杂的技能做好准备。填色…

2 2024五月

未来已来:航运业如何彻底改变全球经济

海军部门是真正的全球经济力量,已迈向 150 亿美元的市场……

1 2024五月

出版商和 OpenAI 签署协议以规范人工智能处理的信息流

上周一,英国《金融时报》宣布与 OpenAI 达成协议。英国《金融时报》授予其世界级新闻报道许可……

四月30 2024