表达关于服务器逻辑的中间件

时间:2018-03-22 03:14:47

标签: node.js express authentication jwt

我正在学习如何使用身份验证构建服务器。我正在关注此tutorial,最终代码可以找到here。其中使用ExpressJWT来构建简单的登录服务器。以下代码:

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文件下的脚本authgetlist是什么(包含的时间太长)。这些脚本什么时候被调用?他们是否在用户的计算机上存储cookie?什么是认证?

这是很多问题,我道歉。我是web-dev的新手,只是想弄清楚基础知识。非常感谢。

1 个答案:

答案 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上阅读有关此类响应方法/属性(以及其他类似sendredirect等)的更多信息。