在Angular 6中解码firebase/php jwt

在Angular 6中解码firebase/php jwt,angular,jwt,angular6,lumen,php-jwt,Angular,Jwt,Angular6,Lumen,Php Jwt,我在我的后端Api(使用Lumen)中使用firebase/php jwt来提供身份验证令牌。 我在前端使用了角度6 这是我登录后从后端得到的结果:- { "message": "Successfully Authenticated !", "status": "Found", "code": 200, "data": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJsdW1lbi1qd3QiLCJzdWIiOjEsImlhdCI6

我在我的后端Api(使用Lumen)中使用firebase/php jwt来提供身份验证令牌。 我在前端使用了角度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中,我如何通过解码令牌来提取用户id、过期时间和其他信息?令牌是使用
HS256
算法签名的,该算法可能配置为PHP-JWT中的默认算法。只需将令牌粘贴到联机调试器中,即可获得该信息

标题如下所示:

{
  "typ": "JWT",
  "alg": "HS256"
}
在Angular中,您可以使用jwt解码包:

安装时使用:
npm安装--保存jwt解码

然后像这样使用它:

{
  "typ": "JWT",
  "alg": "HS256"
}
var decode=require('jwt-decode');
var token=“EYJ0Exaioijkv1qilCJHBGCIjiuzi1NIJ9.EYJPC3mioIjSDW1lbi1Qd3qilCJZdwiIojesmlHdci6mtuzgxNjc3ocwizhwijoxNtmzodiwmzc4fq.84BaTHYoWPEzNsZ6Qu0YK-vqeln0wq0gcmudxxO7oa”
const tokenPayload=解码(令牌);
console.log(tokenPayload.exp)//读取过期时间

您的回答仅通过算法部分就帮了我很大的忙。谢谢你。与您的用法示例一起使用是可以理解的,但这帮助我获得了angular的正确用法,只是想让您知道。