我想了解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://localhost:8000/login发送一个http post请求。如果身份验证成功,则用户将被重定向到根页面"/";如果身份验证失败,则将用户再次重定向到登录页面。

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

最佳答案

护照默认情况下假定您使用input name='username' input name='password'发布表格。如passport docs中所述覆盖它:

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

关于javascript - Passport.js LocalStrategy逻辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19931263/

10-11 05:17