mongodb - everyauth:根据数据库检查 github 身份验证

标签 mongodb node.js express mongoose everyauth

我是 node.js 的新手,我在使用 everyAuth 模块时遇到了问题。

我的问题是,我正在尝试创建一个应用程序,让用户通过 github oauth 登录并检查用户是否在数据库中列入白名单。我想停止身份验证返回 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 遇到了一些问题,所以我切换到 Passport .有一个模块 GitHub authentication以及。在我看来,它使用起来要简单得多。 Passport 提供用户配置文件,您可以将其存储在数据库中并在成功验证后获取。

关于mongodb - everyauth:根据数据库检查 github 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8129918/

相关文章:

node.js - sails 连接到postgres

javascript - 解析 CSV 后将 D3 力图中的 Node 和链接组合成一个数组(Angular 和 D3.JS)

javascript - 无法获取/帖子

node.js - Mongo解析错误: Unescaped at-sign in authority section at parseConnectionString

javascript - 在哪里将我的 mongodb Atlas 连接到我的 React 应用程序?

angularjs - 带有 express 的 Angular HTML5 模式

javascript - axios post请求返回401

node.js - ExpressJS 和中间件中的域错误处理

node.js - 尝试使用 url 访问响应数据

MongoDB 插入性能 - 带有几个索引的巨大表