在 Angular 中解码 firebase/php-jwt 6
Decode firebase/php-jwt in Angular 6
我在 后端 Api(使用 Lumen) 中使用 firebase/php-jwt 来服务 身份验证令牌。
我在 Frontend.
中使用 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 在线调试器中即可获得该信息。
header 看起来像这样:
{
"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
我在 后端 Api(使用 Lumen) 中使用 firebase/php-jwt 来服务 身份验证令牌。 我在 Frontend.
中使用 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 在线调试器中即可获得该信息。
header 看起来像这样:
{
"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