2016-06-26 6 views
0

У меня есть следующий код, который проверяет, является ли пользователь существует в базе данных ...Как отправить пользователя на другую страницу после авторизации (узел JS)

router.post('/', function (req, res) { 

    User.findOne({ 
     username: req.body.log_username, 
     password: req.body.log_password 
    }, function (err, docs) { 
     if (docs.length !== 0) { 
      console.log("user exists"); 

     } 
     else { 
      console.log("no exist"); 
     } 
    }); 

}); 

У меня есть домашняя страница, которую я хочу чтобы отправить пользователя, если логин был успешным. Что я должен положить в оператор if, чтобы отправить его на другую страницу, в данном случае home.js. home.js имеет следующий код в нем ...

var express = require('express'); 
var router = express.Router(); 

router.get('/', function (req, res) { 
    res.render('home', { title: 'Express' }); 
}); 

module.exports = router; 
+0

Если это сработало, отметьте его разрешением –

+0

@ ZohaibIjaz терпение мой друг, я всегда делаю – Bolboa

+0

hahahaha .... ждать очень плохо :) –

ответ

4

Вы должны перенаправить пользователя на главную страницу. res.redirect('path')

Ссылка: http://expressjs.com/en/4x/api.html#res.redirect

router.post('/', function (req, res) { 

    User.findOne({ 
     username: req.body.log_username, 
     password: req.body.log_password 
    }, function (err, docs) { 
     if (docs.length !== 0) { 
      console.log("user exists"); 
      res.redirect('/'); // main page url 
     } 
     else { 
      console.log("no exist"); 
      res.redirect('/login'); 
     } 
    }); 

}); 
0

Вы бы хотели что-то вроде

res.redirect('/');

в ваш пост "/".

Пример:

if (docs.length !== 0) { 
     console.log("user exists"); 
     res.redirect('/'); 
    } 
1

Мангуст findOne будет возвращать 1 объект как result остальное null.
Нет необходимости проверять docs.length > 0
руководства:. http://mongoosejs.com/docs/api.html#query_Query-findOne)

Также добавил req.session.user = result может быть Вам это нужно, чтобы проверить, если пользователь проходит аутентификацию (внутри функции промежуточного слоя для предотвращения прямого доступа к внутренним маршрутам

router.post('/', function (req, res) { 
    User 
     .findOne({ 
     username: req.body.log_username, 
     password: req.body.log_password 
     }) 
     .exec(function (err, result) { 
     if(result) { // auth was successful 
      req.session.user = result; // so writing user document to session 
      return res.redirect('/'); // redirecting user to interface 
     } 

     // auth not successful, because result is null 
     res.redirect('/login'); // redirect to login page 
    }); 
}); 
Смежные вопросы