2013-11-12 2 views
1

Я хочу понять, как работает LocalStrategy.Passport.js Локальная стратегия стратегии

Вот часть моего файла сервера:

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. Если аутентификация прошла успешно, пользователь будет перенаправлен на корневую страницу "/", и если сбой, пользователь будет перенаправлен на страницу входа еще раз.

Вопрос в том, когда мы определяем новую LocalStrategy, я определяю function(email,password, done){...}. Однако, когда я вызываю эту функцию в app.post("/login", ...){...}, как мне передать параметры электронной почты и пароля?

+1

Его безопаснее сказать: «Неправильное имя пользователя или пароль», вместо того, чтобы дать намек, что не так! – renatoargh

ответ

1

Паспорт предполагает по умолчанию, что вы отправили форму с input name='username'input name='password'. переопределить его, как описано в passport docs:

passport.use(new LocalStrategy({ 
    usernameField: 'email', 
    passwordField: 'password' 
    }, 
    function(email, password, done) { 
    // ... 
    } 
)); 
Смежные вопросы