我正在学习如何使用身份验证构建服务器。我正在关注此tutorial,最终代码可以找到here。其中使用Express
和JWT
来构建简单的登录服务器。以下代码:
app.use((req, res, next)=>{
// check header or url parameters or post parameters for token
console.log(req.body);
var token = req.body.token || req.query.token || req.headers['x-access-token'];
if(token){
console.log("token");
jwt.verify(token,"samplesecret",(err,decod)=>{
if(err){
res.status(403).json({
message:"Wrong Token"
});
}
else{
console.log("success");
req.decoded=decod;
next();
}
});
}
else{
res.status(403).json({
message:"No Token"
});
}
});
正在添加一个中间件,但我不确定这是什么目的以及它是如何工作的。这是在每条路线上调用吗?在这种情况下,req.body
是什么? res.status().json()
做了什么?
我也不明白HTML文件下的脚本auth
和getlist
是什么(包含的时间太长)。这些脚本什么时候被调用?他们是否在用户的计算机上存储cookie
?什么是认证?
这是很多问题,我道歉。我是web-dev的新手,只是想弄清楚基础知识。非常感谢。
答案 0 :(得分:1)
在每个路由上调用此方法以检查是否存在令牌,解码并检查它。
如果存在并解码,(其中显示console.log('success');
)它将从jwt解码的数据附加到请求req
,以便在您处理请求的任何控制器中,您可以拥有数据(存储在req.decoded
)
至于res.status().json()
(res
当然意味着回应)......
正在链接的函数是res
。
status(int)
json(obj)
req.status
设置响应状态代码(例如200 OK,404 Not found,503 Server error)。
req.json
发送回复,主体是您传入的json。
因此,以下内容会将消息{error:'we failed'}发送回客户端,其http状态代码为503:
req.status(503).json({ error: 'We failed' });
您可以在Express文档here上阅读有关此类响应方法/属性(以及其他类似send
,redirect
等)的更多信息。