gpt4 book ai didi

javascript - PHP 端的 JWT

转载 作者:行者123 更新时间:2023-11-28 08:01:01 25 4
gpt4 key购买 nike

我正在开发 AngularJS/Phonegap/PHP (Zend) 项目。

我希望用户通过 JWT 登录。 (这似乎是最好的选择,因为 cookies 不起作用)。我找到了tutorial在 Angular 一侧进行管理

我用谷歌搜索了很多,发现谷歌使用 https://github.com/luciferous/jwt版本。我还发现了一个基于 firebase 的更新版本 ( https://github.com/firebase/php-jwt )

(1) 我应该使用哪一个?

我现在使用的是 luciferous,当我通过以下方式创建 token 时:

$ENV_var = "whatever":
$token = encode("id: 5", $ENV_var);

它返回:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.ImlkOiA1Ig.KtG-rOleZwiDhbMnaLI1vIOczPYUM2Az1KfIeygJ7E0,这是无效的here但如果我使用相同的脚本对其进行解码,则有效。

(2) 这是为什么?这是因为 jwt.io 是由 Auth0 创建的吗?

(3)另外,我不明白何时/为什么应该使用“符号方法”而不是编码(如下:来自 github luciferous)

  public static function sign($msg, $key, $method = 'HS256')
{
$methods = array(
'HS256' => 'sha256',
'HS384' => 'sha384',
'HS512' => 'sha512',
);
if (empty($methods[$method])) {
throw new DomainException('Algorithm not supported');
}
return hash_hmac($methods[$method], $msg, $key, true);
}

最佳答案

1) 我建议使用 firebase 实现,因为它维护得更多并且有 Composer 支持。

传递到 encode 方法中的有效负载应该是“声明”数组,请参阅 here例如

$payload = array('sub' => 1, 'iss' => 'example.com');
$secret = 'someSecretKey';

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

2) 因为您生成的 token 不是基于数组或包含任何必需的声明。

3)您通常应该使用编码/解码方法,因为它们会在内部调用符号

关于javascript - PHP 端的 JWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25381516/

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