Hyperf 框架使用 JWT 進行使用者認證

Donjan發表於2019-12-03

配置

上一篇文章中我們已經安裝好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 微服務練兵》系列教程

相關文章