这是使用护照js进行身份验证的代码段,如下所示,
// Middleware
passport.use('local-login', new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
}, function(req, email, password, done){
User.findOne({ email: email }, function(err, user) {
if(err) return done(err)
if(!user) {
return done(null, false, req.flash('loginMessage', 'No user has been found'))
}
if(!user.comparePassword(password)) {
return done(null, false, req.flash('loginMessage', 'Incorrect Username/Password'))
}
return done(null, user)
})
}))
在上面的代码中,完成了一个在多个地方使用的回调函数,但是我想知道这个(完成的)回调函数在哪里定义,我所看到的是将它作为参数传递然后调用,所以我的基本问题是如何知道此回调将执行的操作或在何处定义。它应该执行一些操作。那么在哪里定义呢?
答案 0 :(得分:1)
我怎么知道此回调会做什么
护照文件应该告诉您需要了解的所有信息,以便正确使用它。
或在哪里定义
将源代码中的某处添加到passport
。
答案 1 :(得分:1)
您不必担心在哪里调用“完成”回调。
这是“护照”使用的内部回调
这是您告诉“护照”“登录操作”结果的代码方式
用户已通过验证吗?
答案 2 :(得分:0)
Passport是基于连接的框架。
当您定义这样的中间件时,done
是管道中的下一个功能。
例如,在快速路线中,我们可以使用这样的中间件。
app.use('/route', middleWare1, middleWare2,..., route)
现在中间件有点像这样定义
const middleWare1 = (req, res, next)=> {
//do some work
next()
}
如果调用next,它将转到下一个中间件。 done
就是这样。它将req
传递到管道中的下一个中间件。
并且节点具有在回调中将error
作为第一个参数和data
作为第二个参数传递的约定。
答案 3 :(得分:-1)
根据http://www.passportjs.org/docs/basic-digest/,您调用“完成”功能为用户提供护照。 如果您想知道功能的定义位置,可以阅读“ use”方法的源代码