表达中间件`router.use`对比功能

时间:2018-03-28 04:11:12

标签: node.js express

router.use((req, res, next) => { // export as single route in a file
  if (req.isAuthenticated()) {
    next();
    return;
  }
  res.sendStatus(401);
});

const authenticate = (req, res, next) => {
  if (req.isAuthenticated()) {
    next();
    return;
  }
  res.sendStatus(401);
};

以上是编写认证路由的两种方式,以便在另一条路由中使用(如下所示)。哪种方式更受欢迎?为什么?

router.post('/', authenticate, (req, res, next) => {});

1 个答案:

答案 0 :(得分:1)

  

以上方式会影响ExpressJS应用的所有请求   服务,第二种方法使用面向对象的脚本   只验证那些需要身份验证的请求的方法。

假设您正在写入登录或注册API,除非另有说明,否则您不需要其身份验证参数。

<强> **** **** UPDATE

第一种方法会影响路由器正在投放的所有请求。

您可能已将App.js文件中的路由器用作

const myRoute = require('./routes/test'); // where `test.js` is a file in routes folder with your code above

app.use('/some_route', myRoute);

所有发送到http://servername:port/some_route/ ....的请求现在都会在test.js文件中过滤。