Lumen 中使用 jwt 時,如存在多個 guard,在中介軟體中指定 guard 後,在其他地方解析 jwt 中攜帶的資訊時,會發現並沒有使用中介軟體中指定的 guard。在 Laravel 中可以直接獲取中介軟體指定的 guard。針對這個問題,沒有深入研究造成這種現象的具體原因,我採用了一種間接的方法來實現。
檢視 Lumen 原始碼在 vendor/illuminate/auth/AuthManager.php
檔案 guard
方法中發現使用了預設的 driver,所以思路就是臨時改變 Default Driver
auth.php
中定義 guard,如定義了 A、B 兩個app/Http/Middleware/Authenticate.php
的 handle 方法中 guard 引數接收了 auth 中介軟體傳過來的 guard 引數,所以處理思路就是在路由中使用 auth:A 把 A 傳入到 handle 方法。然後在 handle 方法中新增config(['auth.defaults.guard'=> $guard])
臨時修改Default Driver
- 在需要使用 jwt 的地方使用
app('auth')->guard()
來解析 jwt
本作品採用《CC 協議》,轉載必須註明作者和本文連結