Skip to content

Auth 认证

DuxLite 认证系统的核心类定义和 API 规格说明。

Auth 类

命名空间: Core\Auth\Auth

静态方法

php
public static function token(string $app, array $params = [], int $expire = 86400): string
  • 参数:
    • $app - 应用标识符
    • $params - 载荷参数数组(可选)
    • $expire - 过期时间(秒,默认86400)
  • 返回: string - JWT token(包含 Bearer 前缀)
  • 说明: 生成 JWT 认证令牌
php
public static function decode(ServerRequestInterface $request, string $app): ?array
  • 参数:
    • $request - HTTP 请求对象
    • $app - 应用标识符
  • 返回: array|null - 解码后的载荷数组,失败返回 null
  • 说明: 解码和验证 JWT 令牌

AuthMiddleware 类

命名空间: Core\Auth\AuthMiddleware

构造函数

php
public function __construct(string $app, ?\Closure $callback = null)
  • 参数:
    • $app - 应用标识符
    • $callback - 令牌刷新回调函数(可选)

方法

php
public function __invoke(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
  • 参数:
    • $request - HTTP 请求对象
    • $handler - 请求处理器
  • 返回: ResponseInterface - HTTP 响应对象
  • 异常: ExceptionBusiness - 认证失败时抛出(401状态码)
  • 说明: 中间件调用方法,执行认证验证

请求属性注入

认证中间件会向请求对象注入以下属性:

属性名类型说明
autharrayJWT 解码后的载荷数据
appstring应用标识符

响应头设置

当令牌接近过期时,中间件会在响应头中返回新的令牌:

响应头说明
AuthorizationBearer <new_token>刷新后的新令牌

配置要求

认证系统需要在 config/use.toml 中配置应用密钥:

toml
[app]
secret = "your-jwt-secret-key"

JWT 载荷结构

标准字段

字段类型说明
substring应用标识符
iatint签发时间戳
expint过期时间戳

自定义字段

可通过 $params 参数传入自定义载荷数据:

常用字段类型说明
id`intstring`
usernamestring用户名
rolestring用户角色
permissionsarray权限列表

异常类型

异常类状态码说明
ExceptionBusiness401认证失败、令牌无效等

令牌刷新机制

  • 触发条件: 令牌剩余有效期小于总有效期的 1/3 时
  • 刷新方式: 自动生成新令牌并通过 Authorization 响应头返回
  • 回调函数: 可通过构造函数传入回调函数处理刷新事件

基于 MIT 许可证发布