krisell/laravel-session-migrator

在不删除任何会话的情况下迁移Laravel会话序列化和驱动程序。

v1.0.0 2022-03-22 21:30 UTC

This package is auto-updated.

Last update: 2024-09-23 12:10:14 UTC


README

Latest Version on Packagist Total Downloads GitHub Actions

在生产环境中迁移Laravel会话驱动程序或序列化方法,而不会删除任何会话。

安装

composer require krisell/laravel-session-migrator

功能

此包允许生产应用程序更新一些会话配置,而不会删除任何活动会话或注销用户。具体来说,可以迁移以下两个会话配置选项

  1. 会话序列化方法(phpjson),无论驱动程序如何

    Laravel 9引入了使用json而不是php的serialize来序列化会话数据的选项,这可能从安全性和性能的角度来看都是首选。此方法通过在config/session.php中指定'serialization' => 'json'来更改,但在生产应用程序中更改此设置通常会导致所有活动会话无效,并且用户将被注销。使用此包,此设置可以透明地迁移到用户。

  2. 会话驱动程序(从filecookie

    此包还允许定义要从中迁移的驱动程序,因此可以使用新的驱动程序而不会删除任何会话数据(从技术上讲,旧驱动程序用作回退read源,但所有write都针对新驱动程序执行)。

    请注意,目前仅支持filecookie驱动程序作为迁移from的驱动程序。

用法

有意安装此包不会激活任何迁移功能。为了执行迁移,请更新会话配置到所需的新设置,然后执行以下操作之一

  • 将以下条目添加到您的config/session.php文件中
'migrate' => [
    'serialization' => true, // Enables transparent serialization method migration
    'driver' => 'file' // Session driver you are migrating from
],
  • 或者,您可以设置以下两个环境变量
SESSION_MIGRATE_SERIALIZATION=true
SESSION_MIGRATE_DRIVER=file

当然,您可以仅使用序列化迁移或仅使用驱动程序迁移。同时迁移这两个选项通常是很少需要的,尽管这也受支持。

请注意,migrate.driver是要从中迁移的驱动程序,即之前使用的驱动程序。新的驱动程序或序列化方法配置与正常一样,在配置文件或环境变量中。

您只需要在应用程序可能仍然使用旧格式的会话数据的一段时间内使用此包。这的长度取决于您的会话生存期。例如,如果您的会话在2小时后过期,您只需在生产环境中运行此包两个小时,尽管保留更长的时间也无害。出于性能原因,您应该在迁移完成后禁用并最好删除此包。

预生产应用程序

在预生产应用程序或本地环境中使用此包没有理由,当然,除了在上线前进行测试。如果您在使用场景中删除会话不重要,只需按常规更新会话配置并跳过此包。

测试

composer test

贡献

有关详细信息,请参阅CONTRIBUTING

安全

如果您发现任何与安全相关的问题,请通过电子邮件martin.krisell@gmail.com而不是使用问题跟踪器。

鸣谢

许可证

麻省理工学院许可证(MIT)。请参阅许可证文件获取更多信息。

Laravel 包模板

此包使用Laravel 包模板生成。