我有一个Sailsjs控制器可以执行某些操作,但目前它处于需要身份验证的策略下(即isAuthenticated
)。
在应用该策略之前,我的控制器的集成测试工作正常。现在它不起作用,因为它要求用户登录。
由于未说明的原因,我无法在每次测试之前提出登录请求,因此我必须找到一种方法来跳过该策略。我想把它存根,所以它总是让路线通过。你会如何在Sailsjs v0.12.11中做到这一点?
答案 0 :(得分:0)
您可以在isAuthenticated方法中添加API密钥并检查此密钥。如果密钥可用,请调用next()函数。
代码段:
module.exports = function (req, res, next) {
if (req.isAuthenticated() || req.headers['api-key'] == 'apiKeyValue') {
return next();
} else {
if (!req.headers['api-key'] && !req.isAuthenticated()) {
return res.redirect('/auth/login');
} else {
res.status(403);
return res.json({
error: 'Invalid Api Key'
});
}
}
基本上,通过标头传递API密钥并修改isAuthenticated函数中的逻辑。因此,只要API密钥可用,它就会调用next()回调。