Hyperf 框架使用 JWT 进行用户认证

配置#

上一篇文章中我们已经安装好 phper666/jwt-auth 组件,并发布了配置。

配置文件 config/autoload/jwt.php 已经有详细配置说明,如果要改默认设置,只需要在.env 文件中加入相应的配置项,比如要更改默认的 secret,只需要在.env 文件加入 JWT_SECRET = your secret

这里我们全部使用默认配置。

自定义异常处理#

添加 TokenValidExceptionHandler.php 实现 TokenValidException 的异常处理,返回带 401 错误的 JSON。

config/autoload/exceptions.php http 下注册该异常处理

自定义中间件#

添加 JwtAuthMiddleware.php 中间件

该中间件实现功能:

对所有 jwt 验证的错误都抛出 TokenValidException,并由我们自定义的异常处理类处理
通过 jwt 验证后,把认证的 user 注入到 request,在使用了该中间件的控制器中,只需要调用 request->user 就可以获得当前登录用户。

中间件的使用详见官方文档:https://hyperf.wiki/#/zh/middleware/middle...

编写认证代码#

IndexController.php 添加
token 方法,获取 token
refreshToken 刷新 token
logout 退出,实际是把 token 加入黑名单实现退出

配置好路由 routes.php,就可以用 postman 测试了。

访问 token post 正确的 username 和 password 就可以得到 token 和过期时间

访问需要认证的路由时 header 添加 Bearer Token

博客:《PHP 微服务练兵》系列教程#

本作品采用《CC 协议》,转载必须注明作者和本文链接