菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
68
0

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

原创
05/13 14:22
阅读数 1606

配置

上一篇文章中我们已经安装好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 微服务练兵》系列教程

发表评论

0/200
68 点赞
0 评论
收藏
为你推荐 换一批