为两个馆藏设置护照jwt策略

时间:2019-06-29 11:01:42

标签: node.js mongodb mongoose

我有2个集合的API-管理员和用户。目前我的护照jwtStrategy是:

const jwtStrategy = new JwtStrategy(jwtOptions, (jwtPayload, done) => {
  console.log(jwtPayload)
  User.findById(jwtPayload.sub, (err, user) => {
    if (err) {
      return done(err, null)
    }

    if (user) {
      return done(null, user)
    } else {
      return done(null, false)
    }
  })
})

但这仅对用户有效,因为findById已在用户上完成。我需要类似findById here or here()的东西。我如何将两者结合起来?

1 个答案:

答案 0 :(得分:1)

您可以检查user集合中是否存在User,如果不存在,则可以检查Admin集合中的用户。

尝试一下:

const jwtStrategy = new JwtStrategy(jwtOptions, (jwtPayload, done) => {
  console.log(jwtPayload)
  User.findById(jwtPayload.sub, (err, user) => {
    if (err) {
      return done(err, null)
    }

    if (user) {
      return done(null, user)
    } else {
        //search in Admin collection
        Admin.findById(jwtPayload.sub,(err,admin) => {
            if(err){
                return done(err,null)
            }
            if(admin){
                return done(null,admin)
            }else{
                return done(null, false)
            }
        })
    }
  })
})
相关问题