Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.05.2015, 10:44
Новичок на форуме
Отправить личное сообщение для creator Посмотреть профиль Найти все сообщения от creator
 
Регистрация: 20.02.2015
Сообщений: 6

Авторизация 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`
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
Заранее благодарю!

Последний раз редактировалось creator, 08.05.2015 в 14:04.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка при вызове из консоли глобального модуля express в node.js в windows 8.1 jazznet AJAX и COMET 1 16.06.2015 10:30
Не подключается MySql super-php Серверные языки и технологии 1 02.08.2013 01:26
Таймер на js с записью в mysql lapitsky Общие вопросы Javascript 1 07.06.2013 19:37
Приглашаем web-программистов (php, MySQL, Javascript). smithandpartners Работа 3 06.11.2012 22:29
Авторизация Ajax + Php + Mysql (session) wcb-falcon AJAX и COMET 10 05.07.2012 17:52