gpt4 book ai didi

php - 如何在纯 PHP 中创建刷新 token ?

转载 作者:行者123 更新时间:2023-12-02 20:26:57 25 4
gpt4 key购买 nike

我一直在网上搜索有关如何自己生成刷新 token 的示例/说明。不使用 Oauth 等任何服务。只是用普通的 php 语言。我找到了很多有关如何使用它们的信息,但没有找到如何创建它们。

我创建一个像这样的 JWT:

$secret = "secret";

$header = json_encode(['typ' => 'JWT', 'alg' => 'HS256']);

function createJWT($user_id){
$date = new DateTime();
$timestamp = $date->getTimestamp();

global $header;
global $secret;
$payload = ['user_id' => $user_id, 'iat'=> $timestamp, 'exp'=>$timestamp+10];
$payload = json_encode( $payload );
$base64UrlHeader = str_replace(['+','/','='], ['-','_',''], base64_encode($header));
$base64UrlPayload = str_replace(['+','/','='], ['-','_',''], base64_encode($payload));
$signature = hash_hmac('sha256', $base64UrlHeader . "." . $base64UrlPayload, $secret);
$base64UrlSignature = str_replace(['+','/','='], ['-','_',''], base64_encode($signature));
$JWT =$base64UrlHeader . '.' . $base64UrlPayload . '.' . $base64UrlSignature;

return $JWT;
}

当查看 jwt.io 调试器时,它工作正常。

但是由于我想使用刷新 token ,以便我可以在访问 token 过期后“创建”更多访问 token ,因此我找不到任何有关如何创建此类 token 的信息。

据我了解,访问 token 存储在本地存储/cookie 中,而刷新 token 存储在数据库中。

如何创建刷新 token ,它包含哪些信息?我想这不仅仅是一个随机字符串。存储刷新 token 的数据库/表的模式 a 是什么样的?

最佳答案

我查看了 JWT 的文档,似乎你只需要创建一个 uuid、guid,它只是一个几乎不可能被破解的唯一值/字符串。

我获取了该 uuid 并将其作为“刷新 token ”存储在本地存储中。我还存储在数据库中,其中包含一个表:身份证 |用户 ID |刷新 token |到期日期因此,每当 JWT 过期时,我都会使用持久的刷新 token 并检查该刷新 token 是否存在于数据库中以及是否未过期。然后我发回了一个新的 JWT 以及一个新的刷新 token 。

关于php - 如何在纯 PHP 中创建刷新 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49671099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com