niko9911 / react-http-middleware-session
用于在 ReactPHP Http 服务器中实现 PHP Sessions 的中间件。
1.0.1
2019-03-04 07:10 UTC
Requires
- php: ^7.1
- hansott/psr7-cookies: ^2.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-04 19:35:21 UTC
README
用于在 ReactPHP Http 服务器中实现 PHP Sessions 的中间件。
安装
通过 composer
composer require niko9911/react-http-middleware-session
用法
按照常规方式注册中间件。传递要使用的 cookie 名称。传递 React 缓存实现或使用 PSR 缓存桥接。
示例
<?php declare(strict_types=1); // Cache must be persisted. Array cache will not work. // Just abstract Example. You need to implement // \React\Cache\CacheInterface::class interface. use Niko9911\Harold\Core\Http\Application\Middleware\SessionMiddleware;$cache = new \React\Cache\ArrayCache(); // Or // This is just example here. I personally use PSR // implementation with bridge and I save all to Redis. // This will be much easier if using redis other than // just ReactPHP stuff. You need to require additional package. // https://packagist.org.cn/packages/niko9911/react-psr-cache-bridge // https://packagist.org.cn/packages/cache/redis-adapter $redis = new \Redis(); $redis->connect($host, 6379); $redis->select(0); $redis = \Cache\Adapter\Redis\RedisCachePool($redis); $cache = new \Niko9911\React\Cache\Bridge\ReactPsrCacheBridge($redis); $session = new \Niko9911\React\Middleware\SessionMiddleware( 'PHPSESS', $cache, 3600, '/', '', false, false, new \Niko9911\React\Middleware\Session\Id\Random() ); new \React\Http\Server( [ $session, function (\Psr\Http\Message\ServerRequestInterface $request) { /** @var \Niko9911\React\Middleware\Session\Session $session */ $session = $request->getAttribute(SessionMiddleware::ATTRIBUTE_NAME); if (!$session->isActive()) { $session->begin(); } echo $session->getId(); return new \React\Http\Response(); } ] );
许可证
根据 MIT 许可证 许可。