提问人:Sajib Hossain 提问时间:10/29/2023 更新时间:10/29/2023 访问量:27
如何从下一个 js 前端到节点 js 后端对用户进行谷歌身份验证
How to google authenticate a user from next js frontend to node js backend
问:
我已经在我的节点 js 后端中使用 passport js 设置了 Google 身份验证。我也将它们存储在我的MySQL数据库中。后端已完成,并在端口 3001 上运行。 现在我想创建一个登录页面,让人们在我的下一个 js 前端进行身份验证。但我不知道该怎么做。我应该从前端调用 Google 身份验证回调 URL 吗? 我搜索了一个小时,但什么也没找到。我看到每个人都在使用 nextAuth。但我想使用 node js 作为后端,而不是下一个 js。
答:
0赞
Radmehr
10/29/2023
#1
完成身份验证后,您必须将其保存为 cookie 中的 JWT:
const token = jwt.sign({ foo: 'bar' }, SECRET_KEY);
在客户端中,您可以使用此方法解码 JWT,但无法访问(出于安全原因,我们不传递):SECRET_KEY
SECRET_KEY
const decoded = jwt.decode(token)
但是如果你想解码JWT,你必须将JWT传递给后端并对其进行解码,如果decode为true,则将用户重定向到其他页面,如果出现错误,请删除JWT cookie并将用户重定向到页面。SECRET_KEY
dashboard
login
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 发出请求。这也将保存cookiefetch
axios
评论