Вот уже сутки ковыряюсь с паспортом и стратегиями для своего сервера. Изначально для проверки связи между формой авторизации у меня была простая функция
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`
info: [portal/app.js] Server is listening on port 3000
connected as id 324
POST /login 302 179ms - 68b
GET /login 200 152ms - 12.57kb |
Заранее благодарю!