spaze/mysql-session-handler
Composer 安装命令:
composer require spaze/mysql-session-handler
包简介
MySQL session handler for Nette Framework with optionally encrypted storage
README 文档
README
Custom PHP session handler for Nette Framework that uses MySQL database for storage.
Requirements
- nette/database 3.2+
- nette/di 3.2+
- PHP 8.2+
Installation
The preferred way to install spaze/mysql-session-handler is by using Composer:
$ composer require spaze/mysql-session-handler
Setup
After installation:
- Create a table named
sessionsusing SQL in sql/create.sql. The name of the table can be changed in the configuration using thetableNamekey, like this:
sessionHandler: tableName: sessions_table
- Register the extension in your configuration file (e.g.
config.neon):
extensions: sessionHandler: Spaze\Session\DI\MysqlSessionHandlerExtension
Features
- For security reasons, the session id is stored in the database as an SHA-256 hash.
- Supports encrypted session storage via spaze/encryption which uses paragonie/halite which uses Sodium.
- Events that allow you, for example, to add additional columns to the session storage table.
- Multi-master replication-friendly (tested in master-master row-based replication setup).
Encrypted session storage
Follow the guide at spaze/encryption to create and configure a new encryption key.
Define a new service:
sessionEncryption: \Spaze\Encryption\Symmetric\StaticKey('session', %encryption.keys%, %encryption.activeKeyIds%)
Add the new encryption service to the session handler:
sessionHandler:
encryptionService: @sessionEncryption
Migration from unencrypted to encrypted session storage is not (yet?) supported.
Events
onBeforeDataWrite
The event occurs before session data is written to the session table, both for a new session (when a new row is inserted) and for an existing session (when a row is updated), even if there is no change in the session data.
Additional columns
You can add a new column to the session table by calling setAdditionalData() in the event handler:
setAdditionalData(string $key, $value): void
Use it to store, for example, the user id the session belongs to. See for example this code which uses the Nette\Security\User::onLoggedIn handler to do that.
Credits
This is heavily based on MySQL Session handler by Pematon (Marián Černý & Peter Knut), thanks!
spaze/mysql-session-handler 适用场景与选型建议
spaze/mysql-session-handler 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5.57k 次下载、GitHub Stars 达 4, 最近一次更新时间为 2019 年 03 月 03 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 spaze/mysql-session-handler 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 spaze/mysql-session-handler 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 5.57k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 20
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-03-03