Авторизация express-localStrategy-mysql
Вот уже сутки ковыряюсь с паспортом и стратегиями для своего сервера. Изначально для проверки связи между формой авторизации у меня была простая функция
app.post('/login', function (req, res, next) {
var query = 'SELECT * FROM users WHERE mail="' + req.body.login + '" AND password="' + req.body.password + '"';
req.db.query(query,
function(err, rows, fields) {
if (err) res.render('login', {err: 'DB error: ' + err});
log.info(query);
res.render('login', {authErr: rows.length});
}
);
});
которая возвращала объект, а на клиенте я выводил его длину (rows.length), что бы временами проверять не начудачил ли я чего. (в серверной разработке я новичок) затем нашел вот такой вот пример на https://github.com/manjeshpv/node-ex...passport-mysql вобщем сейчас моя форма авторизации выглядит так
app.post('/login',
passport.authenticate('local-login', {
successRedirect : '/profile', // redirect to the secure profile section
failureRedirect : '/login', // redirect back to the signup page if there is an error
failureFlash : true // allow flash messages
}));
где local-login
passport.use(
'local-login',
new LocalStrategy({
// by default, local strategy uses username and password, we will override with email
usernameField : 'username',
passwordField : 'password',
passReqToCallback : true // allows us to pass back the entire request to the callback
},
function(req, username, password, done) { // callback with email and password from our form
db.query("SELECT * FROM users WHERE username = ?",[username], function(err, rows){
if (err)
return done(err);
if (!rows.length) {
return done(null, false, req.flash('loginMessage', 'No user found.')); // req.flash is the way to set flashdata using connect-flash
}
// if the user is found but the password is wrong
if (!bcrypt.compareSync(password, rows[0].password))
return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.')); // create the loginMessage and save it to session as flashdata
// all is well, return successful user
return done(null, rows[0]);
});
})
);
Проблема в том, что при нажатии кнопки ВХОД происходит только перезагрузка страницы, подозреваю, что вот этот редирект: failureRedirect : '/login' Отловить место, где происходит потеря данных или ошибка у меня не выходит. Подскажите что делать. Если нужно еще какую информацию, я предоставлю. Консоль выводит следующее: Код:
8 May 10:37:53 - [nodemon] starting `node app.js` |
| Часовой пояс GMT +3, время: 15:51. |