battis / user-session
Slim Framework 的用户会话管理
v0.1.3
2024-03-18 16:26 UTC
Requires
- bryanjhv/slim-session: ^4.0
- slim/http: ^1.2
- slim/php-view: ^3.2
- slim/psr7: ^1.5
Requires (Dev)
- ext-simplexml: *
- battis/data-utilities: ^1.1
- battis/phpunit-sessions: ^0.1
- php-di/php-di: ^6.4
- phpspec/prophecy-phpunit: ^2.0
README
Slim Framework 的用户会话管理
安装
composer install battis/user-session
使用
查看 示例 以获取示例实现。重点如下
添加 UserSession\Dependencies
定义
使用 UserSession\Dependencies
准备带有依赖定义的容器(这应该在执行任何可能覆盖 UserSession 默认值的附加应用程序特定定义之前完成)
/** @var DI\ContainerBuilder $containerBuilder */ $containerBuilder->addDefinitions( Battis\UserSession\Dependencies::definitions() );
实现 UserEntityInterface
& UserRepositoryInterface
定义 UserEntityInterface
和 UserRepositoryInterface
的实现
namespace Example; class UserEntity implements Battis\UserSession\Entities\UserEntityInterface { public function getIdentifier(): string { // ... } public function passwordVerify(string $password): bool { // ... } }
<?php namespace Example; class UserRepository implements Battis\UserSession\Repositories\UserRepositoryInterface { public function getUserEntityByUsername( // ... } }
在这些实现中定义这些实现(或者至少是 UserRepositoryInterface
的实现)在容器中
/** @var DI\ContainerBuilder $containerBuilder */ $containerBuilder->addDefinitions([ Battis\UserSession\Repositories\UserRepositoryInterface::class => fn() => new Example\UserRepository(), ]);
定义 /auth
端点
使用 UserSession\Controller
定义认证端点(/auth/login
和 /auth/logout
)
/** @var Slim\App $app */ $app->group( Battis\UserSession\Controller::ENDPOINT, Battis\UserSession\Controller::class );
使用 Session
或 RequireAuthentication
中间件
通过添加 UserSession\Middleware\Session
中间件将用户会话添加到端点(或组),以提供对当前登录用户的访问
/** @var Slim\App $app */ $app ->get('/home', Example\PageRenderer::class) ->add(Battis\UserSession\Middleware\Session::class);
通过添加 UserSession\Middleware\RequireAuthentication
中间件将端点(或组)的访问限制为认证用户
/** @var Slim\App $app */ $app ->get('/protected', Example\PageRenderer::class) ->add(Battis\UserSession\Middleware\RequireAuthentication::class);