ronanchilvers / silex-sessions
Silex的客户端加密会话
v1.1
2019-02-17 21:27 UTC
Requires
- defuse/php-encryption: ^2.1
This package is auto-updated.
Last update: 2024-09-18 18:25:35 UTC
README
cookie图标由Rashida Luqman Kheriwala从Noun Project提供
此包为Silex提供客户端、基于cookie的会话。它是一个独立的实现,不使用Symfony的会话机制。会话数据存储在cookie中,允许出色的水平扩展性。序列化数据使用defuse/php-encryption进行加密,以确保在野外安全。
安装
通过composer轻松安装
composer require ronanchilvers/silex-sessions
配置
首先,您需要添加服务提供程序。有各种配置选项(以下详细说明),但您必须至少提供一个加密密钥。有关创建安全密钥的详细信息,请参阅以下密钥生成部分。
$app->register(new Ronanchilvers\Silex\Sessions\SessionProvider(), [ 'encryption.key' => $secureKey ]);
配置选项
您可以使用各种配置选项,主要用于调整会话使用的cookie存储。这些是
- cookie.name - 会话cookie的名称
- cookie.expire - cookie的过期时间 - 默认为浏览器关闭时
- cookie.path - cookie路径 - 默认为'/'
- cookie.domain - cookie域名 - 默认为空
- cookie.secure - 是否会话cookie只对HTTPS连接有效
- cookie.http.only - 是否cookie只能通过HTTP访问
- encryption.key - 用于加密和解密cookie有效负载的安全加密密钥
使用方法
SessionProvider
在容器中注册了几个服务
- 一个
session
服务,标准会话接口。此服务有常用的get()
、set()
、addFlash()
和getFlash()
方法。 - 如果您正在使用
knplabs/console-service-provider
,您将获得一个用于密钥生成的session:key:generate
命令。**注意:**确保在会话提供程序之前注册控制台提供程序。
// Set session variables $app['session']->set('name', 'Fred Bloggs'); $app['session']->set('stuff', ['data' => 123]); $app['session']->addFlash('notice', 'Yeehaa!'); // Get them out again $name = $app['session']->get('name'); // With a default $stuff = $app['session']->get('stuff', []); // Get the flashes for a particular type foreach ($app['session']->getFlashes('notice') as $message) { echo "<p>Notice : {$message}</p>"; }
Symfony Web Profiler支持
包括一个用于Symfony Web Profiler的数据收集器。要使用它,您需要首先将silex/web-profiler
包添加到您的项目中。然后启用Web Profiler提供程序,如下所示
$app->register(new Silex\Provider\WebProfilerServiceProvider(), [ 'profiler.cache_dir' => 'a directory somewhere', ]); $app->register(new Ronanchilvers\Silex\Sessions\SessionWebProfilerProvider());
您应该会看到分析工具栏上的新按钮和一个显示会话内容的新面板。
加密密钥生成
生成一个足够安全的加密密钥对于维护会话数据的安全至关重要。此包提供了一个Symfony控制台命令,用于生成和输出一个ASCII安全的密钥,您可以将其存储在配置文件中。如果您正在使用knplabs/console-service-provider,该控制台命令会自动添加。
$ php bin/console session:key:generate
Generating new random encryption key
Key : aaf2234228005e7766c2e5075d9d229a4ff9fd0788a8c1d4dde08b1aa3a3d0e413c7694174201e20989fcb9db8238a8b6bdb1277f3d0e413c766c2e5075d9d2197d4d5b