Everyauth:检查数据库的githubauthentication

我对node.js非常陌生,并且遇到了everyAuth模块的问题。

我的问题是,我想创build一个应用程序,让用户通过github oauthlogin,并检查用户是否在数据库中列入白名单。 我想停止validation返回true,直到我检查用户在白名单。 我已经尝试了几种方法来做到这一点,但无济于事。

任何人都可以摆脱任何光?

调用github方法

everyauth.github .appId(conf.github.appId) .appSecret(conf.github.appSecret) .redirectPath('/') .findOrCreateUser (sess, accessToken, accessTokenExtra, ghUser) -> promise = this.Promise() users.findOrCreateByGhData ghUser, accessToken, accessTokenExtra, promise promise; 

用户类

 conf = require '../config' # Mongoose mongoose = require 'mongoose' Schema = mongoose.Schema ObjectId = Schema.ObjectId # Connect mongoose.connect('mongodb://' + conf.db.user + ':' + conf.db.password + '@' + conf.db.url ) # User Schema NewUser = new Schema id : type: Number min: 18 index: true login : type: String ghId : type: Number unique: true date : type: Date default: Date.now # Create Model User = mongoose.model 'NewUser', NewUser exports.findOrCreateByGhData = ( ghData , accessToken, accessTokenExtra, promise ) -> User.find 'ghId': ghData.id , (err, docs) -> if docs.length console.log '=========User===============' console.log docs return promise.fulfill ['Nah its an error'] else console.log '=========No user=============' user = new User() user.login = ghData.login user.ghId = ghData.id user.save ( err ) -> if err throw err console.log 'saved' promise.fulfill user 

一开始我遇到了Everyauth的一些问题,所以我换了护照 。 还有一个用于GitHub身份validation的模块。 在我看来,使用起来要简单得多。 护照提供一个用户configuration文件,您可以将其存储在数据库中,并在成功validation后获得。

promise.fail是你locking的?

 function (session, accessToken, extra, user) { var promise = this.Promise(); doSomethingAsync(function (err, user) { if (user.whitelisted) promise.fulfill(user); else promise.fail('denied'); }); return promise; }