Node.js 有没有办法关闭节点路由器中的中间件。方便时使用()方法?

Node.js 有没有办法关闭节点路由器中的中间件。方便时使用()方法?,node.js,express,angular2-routing,Node.js,Express,Angular2 Routing,所以我在我的节点应用程序中遇到了一个问题,在后端我创建了一个登录和注册post方法,该方法接受用户名和密码。然后我创建了一个中间件路由器。在浏览器中使用该令牌来获取用户配置文件信息。问题在于,中间件现在需要令牌头身份验证: this.options = new RequestOptions({ headers: new Headers({ 'Content-Type': 'application/json', 'authorization': this.auth.authTo

所以我在我的节点应用程序中遇到了一个问题,在后端我创建了一个登录和注册post方法,该方法接受用户名和密码。然后我创建了一个中间件路由器。在浏览器中使用该令牌来获取用户配置文件信息。问题在于,中间件现在需要令牌头身份验证:

this.options = new RequestOptions({
  headers: new Headers({
    'Content-Type': 'application/json',
    'authorization': this.auth.authToken
  })
});
我想知道如何绕过这个中间件,而不使用头身份验证来获取发布在数据库中的博客

这是中间件

router.use((req, res, next) => {
    const token = req.headers['authorization'];
    if (!token) {
        res.json({
            success: false,
            message: 'No token'
        });
    } else {
        jwt.verify(token, Data.secret, (err, decoded) => {
            if (err) {
                res.json({
                    success: false,
                    message: 'Token invalid: ' + err
                });
            } else {
                req.decoded = decoded;
                next();
            }
        });
    }
});
这个路由器中间件下面的每个post和get方法都要求我使用这个中间件。我是否可以绕过这个中间件,不使用requestOptions身份验证从数据库获取我的博客?
谢谢

好吧,显而易见的答案是在这个中间件上面注册那些不需要令牌的路由,而在这个中间件下面注册那些确实需要令牌的路由。路线遵守登记令


或者,如果没有令牌,您的逻辑显然会发送响应。您也可以简单地不这样做,并允许未来的路由处理没有令牌的情况。这实际上取决于您的用例

通常的解决方案是使用路径或路由器安装中间件,以便它只影响您希望它影响的路由。由于您没有向我们展示您的URL是如何为您希望生效的路由和您不希望生效的路由构建的,因此我们无法给出具体的建议。您还可以让中间件检查请求中URL的路径,并让它决定是否应该将其工作应用于此URL。与安装中间件相比,这不是一个干净的解决方案,因此它只能在需要时被调用。嘿,谢谢,我明白了。