在 Angular 6 中解码 firebase/php-jwt



我在我的后端API中使用firebase/php-jwt(使用Lumen(来提供身份验证令牌。 我在前端中使用 Angular 6

这是我登录后后端的结果:-

{
"message": "Successfully Authenticated !",
"status": "Found",
"code": 200,
"data": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJsdW1lbi1qd3QiLCJzdWIiOjEsImlhdCI6MTUzMzgxNjc3OCwiZXhwIjoxNTMzODIwMzc4fQ.84BaTHYoWPEzNsZ6Qu0YK-VQelN0WQ0gcmUdXsxO7OA"
}

我这个令牌的有效载荷结构是:-

$payload = [
'iss' => "lumen-jwt", // Issuer of the token
'sub' => $user->user_id, // Subject of the token
'iat' => time(), // Time when JWT was issued.
'exp' => time() + (60*60) // Expiration time
];

所以,当我解码它时,我只是用:-

JWT::encode($payload, env('JWT_SECRET')); // In environment file "JWT_SECRET={random_secret_code}"

所以,我有一个我正在使用的恒定JWT_SECRET

我的问题是令牌在哪些算法中生成? 因为我没有 在 encode(( 函数中指定任何算法?

现在在 Angular 中,如何通过解码令牌来提取以获取user_id、到期时间和其他信息?

令牌是使用HS256算法签名的,该算法可能配置为 PHP-JWT 中的默认算法。只需将令牌粘贴到 https://jwt.io 联机调试器中即可获取该信息。

标题如下所示:

{
"typ": "JWT",
"alg": "HS256"
}

在 Angular 中,您可以使用包 jwt-decode:

安装它:npm install --save jwt-decode

并像这样使用它:

var decode = require('jwt-decode');
var token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJsdW1lbi1qd3QiLCJzdWIiOjEsImlhdCI6MTUzMzgxNjc3OCwiZXhwIjoxNTMzODIwMzc4fQ.84BaTHYoWPEzNsZ6Qu0YK-VQelN0WQ0gcmUdXsxO7OA"
const tokenPayload = decode(token);
console.log(tokenPayload.exp) // read the expiration time

最新更新