有方法在方便的时候关闭节点router.use()方法中的中间件吗?

时间:2017-08-08 02:33:26

标签: node.js express angular2-routing

所以我刚刚在我的节点应用程序中遇到了一个问题,在后端我创建了一个登录和注册post方法,它接受用户名和密码。然后我创建了一个中间件router.use,它在浏览器中使用令牌来获取用户个人资料信息。问题是中间件现在需要令牌头认证的所有内容:

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();
            }
        });
    }
});

这个路由器中间件的每个帖子和获取方法都要求我使用这个中间件。反正我是否可以绕过这个中间件而不使用requestOptions身份验证从数据库中获取我的博客? 感谢

1 个答案:

答案 0 :(得分:1)

嗯,显而易见的答案是注册 not 的路由需要此中间件上方的令牌,以及那些需要下面的 此中间件的路由。路线尊重注册订单。

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