2019年4月18日 星期四

[Laravel]Laravel JWT實現單一登入功能

最近需要實作一項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加入黑名單裡。

沒有留言:

張貼留言

Google Analytics初學者入門簡介