所以,我正在使用Node.js + Swagger + MongoDB。
我正在尝试验证所有请求都带有有效的auth_token,这是存储在mongo上的用户的值。 我的问题是Swagger支持的验证器需要返回true或false,但由于我必须检查Mongo以验证auth令牌,整个验证变为异步。
以下是您需要的代码:
swagger.addValidator(
function validate(req, path, httpMethod) {
var apiKey = req.headers["auth_token"];
if (!apiKey) {
apiKey = url.parse(req.url,true).query["auth_token"];
}
models.user.validateAuthToken(apiKey, function(err, valid) {
//Here is where I know if the auth token is valid and it checks against Mongo, so it's async
});
return [something]; //this is what the validation sequence is expecting this function to do: return true or false
});
我该如何解决这个问题?
答案 0 :(得分:1)
您不能,您可能想要使用swagger打开票证以启用异步验证。
答案 1 :(得分:1)
您使用的是Swagger 1.2还是2.0?如果是2.0,您可以使用swagger-tools连接中间件,以便为基于Swagger文档的请求连接安全处理程序。它支持Swagger Specification中定义的所有swagger安全机制。
答案 2 :(得分:0)
返回异步函数的结果不起作用?
swagger.addValidator(
function validate(req, path, httpMethod) {
var apiKey = req.headers[ 'auth_token' ];
if (!apiKey) {
apiKey = url.parse(req.url, true).query[ 'auth_token' ];
}
return models.user.validateAuthToken(apiKey, function(err, valid) {
// check against mongo
return validation;
});
});