dotkernel/dot-authentication

认证实现的核心接口

2.4.0 2024-05-03 17:24 UTC

This package is auto-updated.

Last update: 2024-09-03 06:00:06 UTC


README

认证基础包,定义了与DotKernel应用程序一起使用的认证服务的接口。

OSS Lifecycle PHP from Packagist (specify version)

GitHub issues GitHub forks GitHub stars GitHub license

Build Static codecov

SymfonyInsight

安装

在您的项目目录中运行以下命令

$ composer require dotkernel/dot-authentication

请注意,通常此包将作为具体实现的依赖项安装,因此通常您不需要手动将其添加到项目中。

AuthenticationInterface

定义了任何认证服务应该实现的接口,以便与DotKernel应用程序一起工作。这是由于DotKernel应用程序默认使用的包,需要访问认证服务,都是针对此接口进行类型提示的结果。

此外,具体实现应使用此接口的完全限定名(FQN)在服务管理器中注册。

方法

public function authenticate(ServerRequestInterface $request): AuthenticationResult;
  • 实现实际认证过程的方法。它应从$request对象(授权头,自定义请求属性等)中提取凭证。它应返回一个定义在此包中的AuthenticationResult对象,在成功时携带认证状态和身份。
public function challenge(ServerRequestInterface $request): ResponseInterface;
  • 此方法应返回一个有效的PSR-7 ResponseInterface,用于通知客户端或浏览器它需要先进行认证(通常使用WWW-Authenticate头 - 对HTTP基本和摘要认证很有用)
public function hasIdentity(): bool;
public function getIdentity(): ?IdentityInterface;
public function setIdentity(IdentityInterface $identity);
public function clearIdentity();
  • 这些方法用于检查是否已认证,获取认证的身份对象,强制设置身份(可能对自动登录有用)或清除身份(注销)

IdentityInterface

只要实现此接口,您就可以使用任何对象来表示已认证的身份(用户)。它需要两个方法,getId()应返回身份的唯一标识符,getName(): string应返回身份的字符串表示形式(用于显示目的,通常是电子邮件或用户名)

AuthenticationResult

在认证成功或失败时由认证服务返回。它由一个预定义的认证代码组成,该代码描述了认证状态,在认证失败时包含错误消息,并在成功时包含身份对象。

UnauthorizedException

当访问需要先进行认证的内容时抛出的异常。这可以在应用程序中用来触发错误并执行自定义操作(如重定向到登录页面)。没有预定义的处理方式,DotKernel包使用此异常与自定义错误处理器一起处理未经授权的错误。在使用前端或管理应用程序时,这已经在认证/授权包中设置好了,并且从您的应用程序的任何地方抛出UnauthorizedException,默认情况下将重定向到登录页面。