2015-09-27 22 views
0

всеАутентификация с использованием паспорта js

Я работаю над приложением, которое использует базу данных IBM db2 в качестве базы данных и использует паспорт js для аутентификации.

так что мой вопрос заключается в том, как сравнить значения, поступающие из формы входа в систему, которые хранятся в базе данных.

passport.use(new LocalStrategy({ 
     usernameField: 'euser', 
     passwordField: 'epass' 
}, 
function(username, password, done){ 
     process.nextTick(function() { 
     /* how do i open connection to db2 and compare username and password 
     with the data stored in database? */ 
     }); 
} 
)); 

Как открыть соединение с db2 и сравнить значения для аутентификации пользователя и начала сеанса.

ответ

0

Взято из паспорта.js docs; например, саке, измените имя пользователяField на имя пользователя, passwordField на пароль. Вероятно, вы можете переключить объект User с назначением переменных для результатов входа в систему с результатами базы данных, если вы этого желаете.

var username = ibm d2 query results for username; 
var password = ibm d2 query results for password; 


    var User = {//login form username/password 
username: '', //whatever they entered will go here, 
password: '' 
}; 

.... // выше передается в качестве аргументов функции (имя пользователя, пароль, сделано) {

Пользователь объект, возвращаемый из вашей формы входа. findOne - это функция 0JSpassportJs, которая сравнивает значение свойства вашего имени пользователя с результатами запроса базы данных, которые вы назначили переменному имени пользователя. Если совпадение является успешным, а не ошибочным, результаты передаются в качестве объекта пользователя для следующей функции .

function(username, password, done) { 
    User.findOne({ username: username }, function(err, user) { 
     if (err) { return done(err); } 
     if (!user) { 
     return done(null, false, { message: 'Incorrect username.' }); 
     } 
     if (!user.validPassword(password)) { 
     return done(null, false, { message: 'Incorrect password.' }); 
     } 
     return done(null, user); 
    }); 
    } 
)); 

функция возвращает результаты пользовательских объектов, если никаких ошибок нет и матча был найден. Обратите внимание, что это первый стиль ошибки, поэтому он возвращает нулевое значение для успешного результата, а не только результат. null в этот случай смысл нет погрешности.

Смежные вопросы