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下注册该异常处理
自定义中间件
该中间件实现功能:
对所有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 协议》,转载必须注明作者和本文链接
斑竹能不能弄一个passprot的,因为官方毕竟支持passprot扩展!多谢