silverstripe / hybridsessions
为 SilverStripe 提供 Cookie/DB 会话支持
3.0.5
2024-06-17 00:39 UTC
Requires
- php: ^8.1
- silverstripe/framework: ^5
Requires (Dev)
- 4.x-dev
- 3.x-dev
- 3.0.x-dev
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 3.0.0-rc1
- 3.0.0-beta3
- 3.0.0-beta2
- 3.0.0-beta1
- 2.x-dev
- 2.7.x-dev
- 2.7.3
- 2.7.2
- 2.7.1
- 2.7.0
- 2.7.0-rc1
- 2.7.0-beta1
- 2.6.x-dev
- 2.6.0
- 2.6.0-rc1
- 2.6.0-beta1
- 2.5.x-dev
- 2.5.2
- 2.5.1
- 2.5.0
- 2.4.x-dev
- 2.4.1
- 2.4.0
- 2.3.x-dev
- 2.3.0
- 2.3.0-rc1
- 2.3.0-beta1
- 2.2.x-dev
- 2.2.1
- 2.2.0
- 2.1.x-dev
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.x-dev
- 2.0.0
- 2.0.0-beta2
- 2.0.0-beta1
- 1.x-dev
- 1.2.x-dev
- 1.2.0
- 1.2.0-rc1
- 1.1.x-dev
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.x-dev
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-2.6-release
- dev-master
This package is auto-updated.
Last update: 2024-09-18 03:31:28 UTC
README
简介
添加一个会话处理程序,在可能的情况下尝试将会话存储在加密的 Cookie 中,如果不行(因为会话太大或已设置头信息),则存储在数据库中。
这允许在多个服务器上使用 Silverstripe 而不必担心会话粘性(只要您解决了其他多服务器问题,如资产存储和数据库)。
限制
- 仅支持 MySQL 数据库存储。
安装
composer require silverstripe/hybridsessions
设置
- 使用
/dev/build?flush=all
来设置必要的表 - 为了初始化会话处理程序,需要将一小段代码添加到您的
_config.php
文件中,以及用于加密用户 Cookie 的私有密钥。
在 app/src/_config.php
// Ensure that you define a sufficiently indeterminable value for SS_SESSION_KEY in your `.env` use SilverStripe\Core\Environment; use SilverStripe\HybridSessions\HybridSession; HybridSession::init(Environment::getEnv('SS_SESSION_KEY'));
安全
只要密钥是不可预测和保密的,通常这应该和仅服务器端 Cookie 一样安全。唯一的例外是 Cookie 会话容易受到重放攻击。如果您本来就不应该在会话中存储某些内容,这将是一个问题。Ruby on rails 在 https://guides.rubyonrails.net.cn/security.html#replay-attacks-for-cookiestore-sessions 上对这个问题有很好的文档说明。
加密处理程序
此模块附带两个默认的加密处理程序
OpenSSLCrypto
:使用 OpenSSL 库(默认)。
您也可以通过创建一个实现 SilverStripe\HybridSessions\Crypto\CryptoHandler
接口的类来自定义加密处理程序。
要配置活动处理程序,请向您的项目添加 YAML 配置
--- Name: myappsessionstores After: sessionstores --- SilverStripe\HybridSessions\HybridSession: SilverStripe\HybridSessions\Crypto\CryptoHandler: class: MyCustomCryptoHandler
注意事项
此模块与 testsession 模块不完全兼容,因为数据库存储在建立数据库连接之前不可用,而该连接使用会话来指定数据库连接。小于 1000 字节的数据可能仍然通过 Cookie 存储,但较大的数据集将会丢失。