codeinc / session-manager
2.1.6
2018-03-14 15:58 UTC
Requires
- php: >=7.1
- hansott/psr7-cookies: ^1.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- doctrine/orm: 2.4.*
- guzzlehttp/psr7: ^1.4
- phpunit/phpunit: ^7
Suggests
- doctrine/orm: Required in order to use the DoctrineHandler
This package is auto-updated.
Last update: 2022-02-01 13:12:39 UTC
README
此库是一个用 PHP 7 编写的简单会话管理服务。库与 PSR-15 和 PSR-7 兼容。它提供了一个 PSR-15 中间件,将会话管理器附加到 PSR-7 请求对象作为属性。
保存和写入会话通过实现 HandlerInterface
的会话处理程序进行。
使用方法
<?php use CodeInc\SessionManager\SessionManager; // the session manager need a session handler to start $sessionManager = new SessionManager( new MySessionHandler() // any handler implementing HandlerInterface ); $sessionManager->setName("AGreatSession"); $sessionManager->setExpire(30); // minutes $sessionManager->setValidateClientIp(true); $session = $sessionManager->start($psr7ServerRequest); // the PSR-7 server request // SessionManager implement ArrayAccess $session["test"] = "Hello wold!"; echo $session["test"]; // SessionManager is also iterable foreach ($session as $var => $value) { echo "$var = $value\n"; }
中间件
提供了一个 PSR-15 中间件 middleware SessionMiddleware
,用于将会话管理器附加到请求对象,并通过将其附加到 PSR-7 响应来发送会话 cookie。cookie 仅附加到 text/html
响应。
<?php use CodeInc\SessionManager\SessionManager; use CodeInc\SessionManager\SessionMiddleware; // the middleware needs the session manager $sessionManager = new SessionManager(new MySessionHandler()); // instantiating the middleware and processing the PSR-7 request, producing a PSR-7 response // the middleware will take car of starting the session and will attache the session // data to the PSR-7 request attributes. $middleware = new SessionMiddleware($sessionManager); $psr7Response = $middleware->process( $psr7ServerRequest, $somePsr15RequestHandler );
在控制器或另一个中间件中,您可以使用以下方式从 PSR-7 请求属性中访问会话数据:
<?php use CodeInc\SessionManager\SessionMiddleware; $session = SessionMiddleware::getSession($psr7ServerRequest); $session["user_name"] = "John Smith"; echo $session["user_name"];
安装
此库可通过 Packagist 获取,并可以使用 Composer 进行安装。
composer require codeinc/session-manager
许可证
此库在 MIT 许可证下发布(请参阅 LICENSE 文件)。