gpt4 book ai didi

node.js - 如何在 Node.js 应用程序的客户端站点上处理 JWT token ?

转载 作者:搜寻专家 更新时间:2023-10-31 23:51:18 24 4
gpt4 key购买 nike

我正在实现 JWT token 以进行身份​​验证。

我没有使用 Angular 或 React 等任何客户端框架。这只是EJS。

第 1 步。我开发了一个 API,成功登录后返回 token ,如下图所示(我正在使用 Postman 测试 API):

API response with JSON

第 2 步。然后我通过在 Postman 中手动输入它来访问受限路由并传递带有 token 值的授权 header ,它工作得很好。

我的问题是我在哪里以及如何保存从客户端的第 1 步返回的 token ,以便它在第 2 步的 header 中发送。

我是 web 开发的新手,并遵循教程,但我找到的所有关于实现 JWT token 的教程都是为客户端站点的 Angular 或 React 编写的。

如有任何帮助,我们将不胜感激。

谢谢!

最佳答案

首先您必须使用 JWT 创建 token :

const token=jwt.sign({
userId: user._id
},config.secret, {expiresIn: '24h'});
res.json({success:true,message:'Success', token:token, user: {username:user.username}});

然后在你的前面你可以把它保存到localStorage

这将生成一个您可以在 header 中实现的唯一 key

在那之后,当您想检查 header 中是否有 JWT 时,在您的路由中:

router.use((req,res,next)=>{
const token=req.headers['authorization'];
if(!token){
res.json({success:false, message:"No token provided"});
}
else{
jwt.verify(token, config.secret, (err,decoded)=>{
if(err){
res.json({success:false,message:"Token invalid: " + err});
}
else{
req.decoded=decoded;
next();
}
});
}
});

这是一个中间件,它将检查“授权” header 中是否有 JWT key

请注意,此路由之后的每条路由都将运行此中间件。

Here您会找到有关 JSON Web token 的所有详细信息

编辑

以下是您可以如何处理 AJAX 请求:

$("submit").click(function(){

$.ajax({
url : 'api/login,',
type : 'POST',
data : {login: $('#login').val(),password:$('#password').val()}
dataType : 'JSON',
success : function(data, statut){
localStorage.setItem('token',data.token) // assuming you send a json token
},

error : function(resultat, statut, erreur){
// whatever code you want
},

complete : function(resultat, statut){

}

});

});

关于node.js - 如何在 Node.js 应用程序的客户端站点上处理 JWT token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46379410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com