前言
上次写了一个 hyperf-auth
组件,收到许多朋友的反馈和支持,非常感谢大家的支持。今天补充一下关于自定义用户认证的方法。
其实,大部分场景下你都可以通过 hyperf-auth 项目的 README
文档了解到具体如何使用 hyperf-auth
的各种功能,但是关于自定义验证,README
其实只是一笔带过。
下面我们就来了解以下具体如何实现自定义验证。
hyperf-auth 组件的设计思路
由于我本人是个 laravel 爱好者,所以整个组件的设计思路大致是跟 laravel auth
相似的,都有 guard
、user provider
,包括配置方式也是极其相似的,所以,扩展方式也是相似的。
自定义 guard
想要实现一个自己的 guard
非常简单,只要实现 Qbhy\HyperfAuth\AuthGuard
接口即可,而且我抽象了一个 AbstractAuthGuard
继承该抽象类可以减少许多代码,大部分情况下,你只需要实现下面这三个方法即可。
<?php
namespace App\Auth\Guard;
use Qbhy\HyperfAuth\Authenticatable;
use Qbhy\HyperfAuth\Guard\AbstractAuthGuard;
class CustomGuard extends AbstractAuthGuard
{
public function login(Authenticatable $user)
{
// TODO: Implement login() method.
}
public function user(): ?Authenticatable
{
// TODO: Implement user() method.
}
public function logout()
{
// TODO: Implement logout() method.
}
}
该类的构造方法可以注入一些 Hyperf
环境中常用的实例,比如 Request
、Session
。不重写构造函数的情况下,配置文件中的值和 guard 的属性对应关系如下:
$authConfig = [
'default' =