Javascript 其中回调是在这段代码中定义的
这是使用passports js进行身份验证的代码片段,如下所示:Javascript 其中回调是在这段代码中定义的,javascript,node.js,callback,passport.js,asynchronous-javascript,Javascript,Node.js,Callback,Passport.js,Asynchronous Javascript,这是使用passports js进行身份验证的代码片段,如下所示: // Middleware passport.use('local-login', new LocalStrategy({ usernameField: 'email', passwordField: 'password', passReqToCallback: true }, function(req, email, password, done){ User.findOne({ email:
// 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)
})
}))
在上面的代码中,done是一个在多个位置使用的回调函数,但我想知道这个(done)回调函数是在哪里定义的,我看到的是它作为参数传递,然后被调用,所以我的基本问题是如何知道这个回调函数将做什么,或者它是在哪里定义的。它应该执行一些操作。那么它的定义是什么呢
我怎么知道这个回调会做什么
护照文件应该告诉你正确使用护照所需要知道的一切
或者它的定义在哪里
在源代码中的某个地方,输入到
passport
您不必担心“done”回调调用的位置
它是“passport”使用的内部回调
这是告诉“passport”登录操作结果的代码方式
用户是否经过验证
- 如果是这样,则使用error=null和用户数据调用回调
- 如果不是,则调用包含错误的回调
- Passport是一个基于连接的框架。
当您定义这样的中间件时,
done
是管道中的下一个功能
例如,在快速路线中,我们可以使用这样的中间件
app.use('/route', middleWare1, middleWare2,..., route)
现在,中间件的定义是这样的
const middleWare1 = (req, res, next)=> {
//do some work
next()
}
如果调用next,它将转到下一个中间件<代码>完成就是这样。它将把req
传递给管道中的下一个中间件
节点有一个约定,将错误
作为第一个参数传递,将数据
作为第二个参数传递到回调中。根据您调用的“完成”函数,为用户提供passport。
若你们想知道函数是在哪里定义的,你们可以阅读“use”方法的源代码