dotkernel / dot-authentication
认证实现的核心接口
2.4.0
2024-05-03 17:24 UTC
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- psr/http-message: ^1.0 || ^2.0
Requires (Dev)
- laminas/laminas-coding-standard: ^2.5
- phpunit/phpunit: ^10.2
- vimeo/psalm: ^5.13
README
认证基础包,定义了与DotKernel应用程序一起使用的认证服务的接口。
安装
在您的项目目录中运行以下命令
$ 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,默认情况下将重定向到登录页面。