有没有办法在方便时关闭节点 router.use() 方法中的中间件?
Is there a way to shut of a Middleware in node router.use() method when convenient?
所以我刚刚在我的节点应用程序中遇到了一个问题,在 back-end 我创建了一个登录和注册 post 方法,该方法接受用户名和密码。然后我创建了一个中间件 router.use
,它在浏览器中使用令牌来获取用户配置文件信息。问题是中间件现在需要令牌 header 身份验证:
this.options = new RequestOptions({
headers: new Headers({
'Content-Type': 'application/json',
'authorization': this.auth.authToken
})
});
我想知道如何绕过这个中间件而不使用 header 身份验证来获取我在数据库中 posted 的博客。
这是中间件。
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 和获取此路由器中间件下方的方法都需要我使用此中间件。无论如何我可以绕过这个中间件而不使用 requestOptions 身份验证从数据库中获取我的博客吗?
谢谢
好吧,显而易见的答案是注册 不需要 这个中间件上面的令牌的路由,以及 下面[=]需要令牌的路由17=] 这个中间件。路线遵守注册顺序。
或者,如果没有令牌,您的逻辑会明确发送响应。您也可以简单地 not 这样做并允许未来的路由处理没有令牌的情况。这实际上取决于您的用例。
所以我刚刚在我的节点应用程序中遇到了一个问题,在 back-end 我创建了一个登录和注册 post 方法,该方法接受用户名和密码。然后我创建了一个中间件 router.use
,它在浏览器中使用令牌来获取用户配置文件信息。问题是中间件现在需要令牌 header 身份验证:
this.options = new RequestOptions({
headers: new Headers({
'Content-Type': 'application/json',
'authorization': this.auth.authToken
})
});
我想知道如何绕过这个中间件而不使用 header 身份验证来获取我在数据库中 posted 的博客。
这是中间件。
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 和获取此路由器中间件下方的方法都需要我使用此中间件。无论如何我可以绕过这个中间件而不使用 requestOptions 身份验证从数据库中获取我的博客吗? 谢谢
好吧,显而易见的答案是注册 不需要 这个中间件上面的令牌的路由,以及 下面[=]需要令牌的路由17=] 这个中间件。路线遵守注册顺序。
或者,如果没有令牌,您的逻辑会明确发送响应。您也可以简单地 not 这样做并允许未来的路由处理没有令牌的情况。这实际上取决于您的用例。