使用 node.js/expressjs/mongoose/mongoose-auth/everyauth。所有版本都是最新的。
我正在尝试使用数据库表在开发过程中通过电子邮件地址将用户列入白名单,但我希望主要的身份验证方法是 facebook。如果在 alpha_whitelist 中找到 facebook 电子邮件,我希望让 mongoose-auth 只创建帐户。这会按预期为表中的地址创建帐户,但如果用户不在白名单中,则会超时并导致服务器崩溃。
findOrCreateUser: function (sess, accessTok, accessTokExtra, fbUser) {
var promise = this.Promise(),
User = this.User()();
// TODO Check user in session or request helper first
// e.g., req.user or sess.auth.userId
User.findOne({'fb.id': fbUser.id}, function (err, foundUser) {
if(foundUser)
return promise.fulfill(foundUser);
alpha_whitelist.findOne(
{email: fbUser.email},
function(err,doc) {
if(doc) {
console.log("CREATING");
User.createWithFB(fbUser, accessTok, accessTokExtra.expires, function (err, createdUser) {
console.log(err,createdUser);
if (err) return promise.fail(err);
return promise.fulfill(createdUser);
});
} else {
console.log('Denied');
//not sure what to do here... i need to break the auth chain and redirect the user back to '/'
}
});
});
return promise;
}
似乎无论我放在那里什么,它都会失败并导致服务器崩溃。我显然错过了一些东西。任何帮助将不胜感激。
最佳答案
我还没有测试过这个,但我确定你只需要像其他代码块一样返回 Promise
else {
console.log('Denied');
return promise.fail('Denied');
}
关于node.js - 如何拒绝用户使用 mongoose-auth/everyauth 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8337848/