我想了解以下代码段的功能:
我对以下几行代码有疑问:
1)if(req.headers['auth-token']&&req.headers['user-id']&&req.headers['org-id']){
我了解代码说明,如果'auth-token'
,'user-id'
,'org-id'
匹配,则程序将执行以下代码行。问题是程序将从哪里获得“ auth-token”,“ user-id”和“ org-id”?它们是特定于特定用户的,应为其分配一些值。程序将如何获取这些值?
还请提及req.header函数的功能。
2)var query={ip:req.ip,token:req.headers['auth-token'],date:new Date().toISOString(),user_id:req.headers['user-id'],org_id:req.headers['org-id']};
在本节中,为ip
分配了req.ip
的值(是否获取用户的IP地址?),给token分配了req.headers['auth-token']
的值。
Date
分配了Date()
的值(这是当前日期吗?),该值已转换为字符串。
user_id:
和org_id:
都做了同样的事情(我正确吗?)
3)db.one("SELECT * FROM public.password_token WHERE ip=${ip} AND user_id=${user_id} AND auth_token=${token} AND org_id=${org_id} AND ${date} BETWEEN fromdate AND todate;",query)
在此代码行中,我无法理解以下部分:${date} BETWEEN fromdate AND todate
。 fromdate
和todate
在哪里被声明/定义/分配一个值?是关键字还是用户定义的?
router.use(function (req, res, next) {
if(req.headers['auth-token']&&req.headers['user-id']&&req.headers['org-id']){
var query={ip:req.ip,token:req.headers['auth-token'],date:new Date().toISOString(),user_id:req.headers['user-id'],org_id:req.headers['org-id']};
db.one("SELECT * FROM public.password_token WHERE ip=${ip} AND user_id=${user_id} AND auth_token=${token} AND org_id=${org_id} AND ${date} BETWEEN fromdate AND todate;",query)
.then(result=>{
next();
})
.catch(error=>{
console.log(error);
res.status(401).send("Authentication failure!");
});
}
else{
res.status(401).send("Authentication token, User ID or Organization ID header is not found!");
};
});