我正在使用slim-jwt-auth爲JSON API創建基於令牌的身份驗證。使用slim-jwt-auth生成令牌
該文檔非常有幫助,但有一點我不明白的是令牌是如何生成的?文檔說中間件能夠解碼令牌,但看不到任何編碼方式。
我見過的一些項目使用firebase/jwt,但我不確定這是否需要,或與slim-jwt-auth
兼容。
slim-jwt-auth能夠生成令牌嗎?
我正在使用slim-jwt-auth爲JSON API創建基於令牌的身份驗證。使用slim-jwt-auth生成令牌
該文檔非常有幫助,但有一點我不明白的是令牌是如何生成的?文檔說中間件能夠解碼令牌,但看不到任何編碼方式。
我見過的一些項目使用firebase/jwt,但我不確定這是否需要,或與slim-jwt-auth
兼容。
slim-jwt-auth能夠生成令牌嗎?
你可以但你不需要安裝額外的庫來生成令牌。中間件在內部使用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獲取靈感。
根據slim-jwt-auth
着陸頁上的免責聲明,中間件僅處理令牌;不提供任何方式來生成它們。
HEADS UP!中間件不實現OAuth 2.0授權服務器也不提供生成,發佈或存儲認證令牌的方式。它僅在通過標頭或cookie傳遞時解析和驗證令牌。
(重點是我的)
事實上,你可以使用另一個庫來產生,這將然後通過slim-jwt-auth
消耗JWT令牌。只要這兩個庫正確實施了規範,至少如果您只使用強制性規範來實現規範的某些部分,則應該沒有互操作性問題。
您可以檢查jwt.io爲PHP庫JWT處理的列表,但firebase/jwt
將是一個很好的起點。如果您不是自己生成令牌,而是正在考慮將令牌的身份驗證和頒發委託給第三方,那麼我建議您看看Auth0。
披露:我在Auth0工作。