可以在 Laravel 中编码并在 JavaScript 中解码的 JWT

JWT that can be encoded in Laravel and decoded in JavaScript

我正在尝试生成一个 JWT 令牌,我将在我的 Laravel 项目中执行此操作,就像我发现的这个解决方案:https://github.com/luciferous/jwt/blob/master/JWT.php

所以我有 2 个问题想解决:

在我的 Next.js React 项目中,我会在 cookie 中设置 JWT 以记住它。那正确吗?然后可以将它与每个请求一起传递给服务器以验证用户。

我如何在 Next.js 中解码它?这样我就可以从中获取一些基本信息,比如用户名。

对于 Javascript 中的 JWT 解码,您可以使用 Auth0 的 JWT 解码库(https://github.com/auth0/jwt-decode),这使得解码(无验证)编码的 JWT 令牌变得简单。

您只需从设置的 cookie 中读取 JWT 令牌并像这样对其进行解码:

var token = 'eyJ0eXAiO.../// jwt token';
var decoded = jwt_decode(token);

您还可以使用一个简单的函数对其进行解码,如下所示:

function parseJwt (token) {
    var base64Url = token.split('.')[1];
    var base64 = base64Url.replace('-', '+').replace('_', '/');
    return JSON.parse(window.atob(base64));
};

直接在 React 应用程序中解码 JWT 令牌没有问题,只需确保您始终在服务器端验证编码后的令牌,以免它是用户修改的 JWT 令牌。