gpt4 book ai didi

javascript - Passport - 双人战略 "ERR|The username passed to sign_request() is invalid"

转载 作者:搜寻专家 更新时间:2023-10-31 23:52:31 24 4
gpt4 key购买 nike

我目前正在使用 passport 在 node.js 中与 duo 一起玩,看看我是否可以将它实现到测试应用程序中....我正在使用 passport-duo strat 来执行此操作,并且位于 GitHub 存储库中here我曾尝试使用给出的示例,但无法在我自己的应用程序中使用它。

但似乎每次我为 duo 加载 iframe 时,它​​总是向我抛出相同的错误 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
});
});

HTML

<!DOCTYPE html>
<html>
</script>
<style>
body {
background: #f1f1f1;
}
.iframe_div {
width: 90%;
max-width: 620px;
margin: 0 auto;
}
#duo_iframe {
height: 500px;
width: 100%;
}
div {
background: transparent;
}
</style>
<form method="POST" style="display:none;" id="duo_form">
</form>
<meta name="viewport" content="width=device-width, initial-scale=1">
<head>
<title>Passport-Duo Example</title>
</head>
<body>
<div class="iframe_div">
<iframe id="duo_iframe" frameborder="0" allowtransparency="true"></iframe>
</div>
</body>
<script src="js/Duo-Web-v1.bundled.min.js"></script>
<script>
Duo.init({
'host': '<%= host %>',
'post_action': '<%= post_action %>',
'sig_request': '<%= sig_request %>'
});
</script>
</html>

想知道任何有实现 passport-duo 经验的人,并且知道为什么 sig_request 会返回该错误。

最佳答案

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 ,此函数 sign_requeststrategy 调用使用以下代码:

var signed = duo.sign_request(this._ikey, this._skey, this._akey, req.user.email);

看来您的 req.user.email 与先前返回此错误的条件相匹配。使用问题中提供的代码,无法检查它是哪一个,但您绝对应该检查此变量并确保这些条件都不成立。

关于javascript - Passport - 双人战略 "ERR|The username passed to sign_request() is invalid",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38462302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com