Passport.js LocalStrategy逻辑

我想了解LocalStrategy如何工作。

这是我的服务器文件的一部分:

var passport = require('passport'); var express = require('express'); /* other initializations */ var app = express(); passport.use = new LocalStrategy( function(email, password, done) { module.exports.findByUsername(email, function(err, user){ if (err) throw err; if(!user) { done(null, false, { message: 'Incorrect username.' }); } else if(user.password != password) { done(null, false, { message: 'Incorrect password.' }); } else { return done(null, user); } }); } ) app.post("/login" , passport.authenticate('local',{ successRedirect : "/", failureRedirect : "/login", }) , function(){ console.log("post /login"); } ); 

现在,我从一个客户端浏览器发送一个http post请求到http://localhost:8000/login 。 如果authentication成功,用户将被redirect到根页面"/" ,如果失败,用户将被redirect到login页面。

问题是,当我们定义一个新的LocalStrategy时,我定义了一个function(email,password, done){...} 。 但是,当我在app.post("/login", ...){...}调用此函数时,我如何传递电子邮件和密码参数?

护照在默认情况下假设您在input name='username' input name='password'的情况下POST一个表单。 如护照文档中所述覆盖它:

 passport.use(new LocalStrategy({ usernameField: 'email', passwordField: 'password' }, function(email, password, done) { // ... } ));