我目前正在玩node.js中的duo使用护照来查看我是否可以将它实现到测试应用程序中....我正在使用passport-duo strat来执行此操作并且GitHub repo for that here我试图使用给出的示例,但无法在我自己的应用程序中使用它。
但似乎每次我为二人组加载iframe时都会给我留下同样的错误GO.db
它不断下降的片段如下:
SELECT * FROM TableName
WHERE Field = @ParameterName
HTML
ERR|The username passed to sign_request() is invalid.
想知道任何有实施护照二人的经验的人,并且知道为什么app.get('/login-duo', checkLoggedIn, function (req, res, next) {
console.log(req.user);
console.log(req.user['id']);
console.log(req.query.host);
console.log(req.query.post_action);
console.log(req.query.signed_request);
var username= req.user['id'];
res.render('login-duo', {
user : req.user['id'],
host : req.query.host,
post_action : req.query.post_action,
sig_request : req.query.signed_request
});
});
会抛出这个错误。
答案 0 :(得分:2)
您提到的Passport-Duo package declares duo_web
作为依赖项。
duo_nodejs (duo_web)是返回此错误的包。错误在duo.js
file。
如果我们查看使用此错误的the source code,则唯一的出现是:
exports.sign_request = function (ikey, skey, akey, username) {
if (!username || username.length < 1) {
return ERR_USER;
}
if (username.indexOf('|') !== -1) {
return ERR_USER;
}
// ...
// Truncated for the example...
// ...
}
代码仅在3种情况下返回此错误:
|
返回Passport-Duo,strategy使用以下代码调用此函数sign_request
:
var signed = duo.sign_request(this._ikey, this._skey, this._akey, req.user.email);
您的req.user.email
似乎与先前返回此错误的条件相匹配。使用问题中提供的代码,无法检查它是哪一个,但您应该检查此变量并确保这些条件均不正确。