2016-11-22 94 views
1

我正在使用slim-jwt-auth爲JSON API創建基於令牌的身份驗證。使用slim-jwt-auth生成令牌

該文檔非常有幫助,但有一點我不明白的是令牌是如何生成的?文檔說中間件能夠解碼令牌,但看不到任何編碼方式。

我見過的一些項目使用firebase/jwt,但我不確定這是否需要,或與slim-jwt-auth兼容。

slim-jwt-auth能夠生成令牌嗎?

回答

4

你可以但你不需要安裝額外的庫來生成令牌。中間件在內部使用firebase/php-jwt,因此您可以使用相同的庫來生成令牌。像下面這樣。

use \Firebase\JWT\JWT; 
use \Tuupola\Base62; 

$now = new DateTime(); 
$future = new DateTime("now +2 hours"); 
$jti = Base62::encode(random_bytes(16)); 

$secret = "your_secret_key"; 

$payload = [ 
    "jti" => $jti, 
    "iat" => $now->getTimeStamp(), 
    "nbf" => $future->getTimeStamp() 
]; 

$token = JWT::encode($payload, $secret, "HS256"); 

您也可以檢查Slim API Skeleton獲取靈感。

0

根據slim-jwt-auth着陸頁上的免責聲明,中間件僅處理令牌;不提供任何方式來生成它們。

HEADS UP!中間件不實現OAuth 2.0授權服務器也不提供生成,發佈或存儲認證令牌的方式。它僅在通過標頭或cookie傳遞時解析和驗證令牌。

(重點是我的)

事實上,你可以使用另一個庫來產生,這將然後通過slim-jwt-auth消耗JWT令牌。只要這兩個庫正確實施了規範,至少如果您只使用強制性規範來實現規範的某些部分,則應該沒有互操作性問題。


您可以檢查jwt.io爲PHP庫JWT處理的列表,但firebase/jwt將是一個很好的起點。如果您不是自己生成令牌,而是正在考慮將令牌的身份驗證和頒發委託給第三方,那麼我建議您看看Auth0

披露:我在Auth0工作。