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 协议》,转载必须注明作者和本文链接
讨论数量: 1

斑竹能不能弄一个passprot的,因为官方毕竟支持passprot扩展!多谢

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!