ronanchilvers/silex-sessions

Silex的客户端加密会话

v1.1 2019-02-17 21:27 UTC

This package is auto-updated.

Last update: 2024-09-18 18:25:35 UTC


README

Beta Status

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