aloframework/session

基于Redis或MySQL的会话管理

2.0 2016-11-07 22:04 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:09:29 UTC


README

基于MySQL & Redis的会话管理

最新版本API文档: https://aloframework.github.io/session/

License Latest Stable Version Total Downloads

安装

安装通过Composer进行

composer require aloframework/session

MySQL的额外步骤

基于MySQL的会话需要额外一步,具体描述在 setup/MySQL.md

使用

所有会话使用相同的接口(除构造函数外),在此示例中,将使用Redis。

<?php
    
    use AloFramework\Session\RedisSession;
    
    //Make our Redis connection
    $redis = new Redis();
    $redis->connect('127.0.0.1');
    
    //Start our session. The redis parameter can be omitted, in which case the code above will be run automatically
    // within the class
    $sess = (new RedisSession($redis))->start();
    
    //That's it - you can now use the handler just like you would use a regular PHP session.
    $_SESSION['foo'] = 'bar';
    unset($_SESSION['qux']);
    echo $_SESSION['baz'];
    
    //Additionally, you can work directly with the RedisSession object via the ArrayAccess interface and magic
    // getter+setter:
    $sess->foo   = 'bar';
    $sess['foo'] = 'bar';
    unset($sess['foo']);
    echo $sess->foo;
    echo $_SESSION['foo'];

日志记录

应将一个 \Psr\Log\LoggerInterface 实例传递给构造函数以使用基本日志记录(几乎所有内容都是调试级别)。如果没有传递,将创建一个带有默认参数的 \AloFramework\Log\Log 实例。

配置

配置通过 Configuration 类 完成。

  • Config::CFG_TIMEOUT - 会话寿命(以秒为单位)(默认为300)
  • Config::CFG_COOKIE_NAME - 会话cookie的命名方式(默认为AloSession)
  • Config::CFG_FINGERPRINT_NAME - 会话密钥,用于存储会话劫持预防指纹。您不能设置与该名称相同的任何会话密钥,因为这将使会话无效。默认为 _fp_。
  • Config::CFG_PREFIX - 如果使用基于缓存的处理器,则如何前缀会话密钥。默认为 _alo_sess_。
  • Config::CFG_SESSION_ID_ALGO - 用于会话ID的哈希算法。默认为sha512。
  • Config::CFG_TABLE - 如果使用基于MySQL的处理程序,则使用该表。默认为 alo_session。
  • Config::CFG_SECURE - 如果设置为 true,则仅通过 HTTPS 连接发送会话 cookie(默认为 true)。
  • Config::CFG_GC - 垃圾收集概率。如果设置为 100(默认值),则在会话启动时有 1/100(即 1%)的概率发生垃圾收集事件。这仅用于 MySQLNoEventSession
  • Config::CFG_SAVE_CLI - 是否在 CLI 模式下保存/写入会话数据(默认:false)
  • Config::CFG_TOKEN - 用于标识令牌数据的会话密钥。您不得使用此密钥设置任何会话值,因为这将使令牌无效。默认为 _tk_。