最近需要實作一項JWT身份驗證的功能,同時在有他人登入時將其他client登出
這邊我使用了一項開源的套件tymondesigns/jwt-auth來實作JWT的部分,
正常使用下的安裝說明作者都有寫清楚,
但是!!文件超爛啊...
文件跟實際上的套件功能缺失了70%左右,慢慢爬程式碼才發現文件跟程式差很多
接下來說說單一登入的部分
主要是利用invalidate這個函數,每次在登入發出一組token之後把token存入資料庫,
並且在登入的時候將前一組token放進黑名單就行了。
但是文件裡的auth()->invalidate是直接取request的header裡面的token進行註銷,
沒得透過參數塞token進去,他是呼叫/tymon/jwt-auth/src/JWT.php底下的invalidate
public function invalidate($forceForever = false)
{
$this->requireToken();
$this->manager->invalidate($this->token, $forceForever);
return $this;
}
所幸有找到透過\JWTAuth::setToken($oldToken)->invalidate();
也可以將指定的token加入黑名單裡。
沒有留言:
張貼留言