battis/user-session

Slim Framework 的用户会话管理

v0.1.3 2024-03-18 16:26 UTC

This package is auto-updated.

Last update: 2024-09-18 20:34:18 UTC


README

Latest Version codecov

Slim Framework 的用户会话管理

安装

composer install battis/user-session

使用

查看 示例 以获取示例实现。重点如下

添加 UserSession\Dependencies 定义

使用 UserSession\Dependencies 准备带有依赖定义的容器(这应该在执行任何可能覆盖 UserSession 默认值的附加应用程序特定定义之前完成)

/** @var DI\ContainerBuilder $containerBuilder */
$containerBuilder->addDefinitions(
  Battis\UserSession\Dependencies::definitions()
);

实现 UserEntityInterface & UserRepositoryInterface

定义 UserEntityInterfaceUserRepositoryInterface 的实现

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
);

使用 SessionRequireAuthentication 中间件

通过添加 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);