如何从下一个 js 前端到节点 js 后端对用户进行谷歌身份验证

How to google authenticate a user from next js frontend to node js backend

提问人:Sajib Hossain 提问时间:10/29/2023 更新时间:10/29/2023 访问量:27

问:

我已经在我的节点 js 后端中使用 passport js 设置了 Google 身份验证。我也将它们存储在我的MySQL数据库中。后端已完成,并在端口 3001 上运行。 现在我想创建一个登录页面,让人们在我的下一个 js 前端进行身份验证。但我不知道该怎么做。我应该从前端调用 Google 身份验证回调 URL 吗? 我搜索了一个小时,但什么也没找到。我看到每个人都在使用 nextAuth。但我想使用 node js 作为后端,而不是下一个 js。

节点 .js 身份验证 下一个 .js 护照 .js

评论


答:

0赞 Radmehr 10/29/2023 #1

完成身份验证后,您必须将其保存为 cookie 中的 JWT:

const token = jwt.sign({ foo: 'bar' }, SECRET_KEY);

在客户端中,您可以使用此方法解码 JWT,但无法访问(出于安全原因,我们不传递):SECRET_KEYSECRET_KEY

const decoded = jwt.decode(token)

但是如果你想解码JWT,你必须将JWT传递给后端并对其进行解码,如果decode为true,则将用户重定向到其他页面,如果出现错误,请删除JWT cookie并将用户重定向到页面。SECRET_KEYdashboardlogin

jwt.verify(token, SECRET_KEY, function(err, decoded) {
    if(err){
        //delete JWT cookie
        //redirect to login page
    }

    if(decoded){
        //make JWT token or redirect user to other page
    }
});

您可以在此处阅读有关此库的更多信息:https://www.npmjs.com/package/jsonwebtoken

评论

0赞 Sajib Hossain 10/29/2023
感谢您抽出宝贵时间回答。我不是在找这个。我想知道如何向我的后端 Google 身份验证回调发出请求。我发现这是一种做到这一点的方法。我实现了它,它在我的浏览器中保存了 cookie。它正在工作。但是你知道其他方法可以做到这一点吗?window.open(`${process.env.NEXT_PUBLIC_API_BASE_URL}/auth/google`, "_self");
0赞 Radmehr 10/29/2023
我很高兴你的问题得到了解决。您可以使用 node 或 向 API 发出请求。这也将保存cookiefetchaxios