可以用Laravel编码并用JavaScript解码的JWT

可以用Laravel编码并用JavaScript解码的JWT,javascript,php,laravel,reactjs,next.js,Javascript,Php,Laravel,Reactjs,Next.js,我正在尝试生成一个JWT令牌,我将在我的Laravel项目中这样做,就像我发现的这个解决方案: 因此,我有两个问题,我正努力想弄明白: 在我的Next.js React项目中,我会在cookie中设置JWT以记住它。是这样吗?然后可以将它与每个请求一起传递给服务器以验证用户 那么我如何在Next.js中解码呢?因此,我可以从中获得一些基本信息,比如用户名。对于Javascript中的JWT解码,您可以使用Auth0的JWT解码库(),这使得解码(无需验证)编码的JWT令牌变得简单 您只需从集合c

我正在尝试生成一个JWT令牌,我将在我的Laravel项目中这样做,就像我发现的这个解决方案:

因此,我有两个问题,我正努力想弄明白:

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


那么我如何在Next.js中解码呢?因此,我可以从中获得一些基本信息,比如用户名。

对于Javascript中的JWT解码,您可以使用Auth0的JWT解码库(),这使得解码(无需验证)编码的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));
};
您还可以使用一个简单的函数对其进行解码,如下所示:

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令牌。

您使用密钥对JWT进行编码,因此需要该密钥才能解码JWT(这将在服务器端完成,因为我认为将其传递给客户端是不安全的).啊,好吧,所以我永远不应该在我的React应用程序中解码它?那么我就必须始终从laravel api传递我需要的信息?如果能够通过解码JWT访问React应用程序中的一些数据,那就太好了。当然可以在客户端上解码,但这取决于你对它们的信任程度。试试看但是我用php编码它的秘密是需要的,对吗?加上算法?@user1009698不,这个秘密是不需要的。它只需要验证令牌,而不仅仅是访问存储在JWT令牌中的数据,JWT令牌是一个用Base64编码的JSON对象。我正在尝试同样的方法,它似乎解码得很好,但是我得到了一个不同的结果对象,而不是我在服务器端准备的有效负载,我还需要做什么?