2017-02-16 21 views
0

У меня есть 2 основных страницы. Одна страницаАвторизация пользователя в Nodejs

  • mywebsite.com/login

  • mywebsite.com

/Логин страница показывает логин и пароль страницы. Когда пользователь успешно проходит аутентификацию, открывается страница mywebsite.com.

mywebsite.com/login идет в login.js файл на сервере

mywebsite.com/ идет в index.js файл на сервере

Я хочу сохранить сеанс через обе страницы. Если пользователь не зарегистрирован, я хочу, чтобы mywebsite.com/ перенаправлялся на/login.

Я читал о req.session, но я не знаю, как узнать о req.session значение login.js внутри index.js.

app.js

var login = require('./routes/login'); 
var routes = require('./routes/index'); 

var app = express(); 

app.use('/login', login); 
app.use('/', routes); 


// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 

login.js

router.get('/', function(req, res, next) { 
    res.render('login', { title: 'Login' }); 
}); 

router.post('/isEmployeeAdmin', function(req, res, next) { 
    console.log("req is: ", req.body); 
    employeeController.isEmployeeAdmin(req.body, function (response, data) { 
    response.data = data; 
    if (!response.success) { 
     console.error("error is: ", response.message); 
     res.status(200).send(response); 
     return; 
    } 

    res.status(200).send(response); 
    console.log("success in finding if employee is admin ", response.data); 
    }); 
}); 

index.js

router.get('/', function(req, res, next) { 

    if(req.session.loggedIn) 
      res.render('index', { title: 'WinGoku' }); 
    else 
     res.status(404).send(); // or redirect to login.ejs file 
}); 

Что я делаю неправильно? Как мне это сделать?

+0

Вот базовая информация об использовании промежуточного программного обеспечения для сеансов - http://www.codexpedia.com/node-js/a-very-basic-session-auth-in-node-js-with-express-js/ – metame

+0

Возможно дублировать [как реализовать login auth в node.js] (http://stackoverflow.com/questions/7990890/how-to-implement-login-auth-in-node-js) – metame

ответ

0

Предлагаю вам использовать модуль npm для экспресс-сессии для поддержания сеансов. https://www.npmjs.com/package/express-session

Вам необходимо включить его в ваших app.js

var session = require('express-session'); 

Дайте ему секретный ключ

app.use(session({secret: 'anystringhere'})); 

И изменить этот код немного

if (!response.success) { 
     console.error("error is: ", response.message); 
     res.status(200).send(response); 
     return; 
    } 
else{ 
    req.session.loggedIn = true; 
} 

Это должно сделать трюк

+0

Будет ли req.session.loggedIn значение внутри login.js также будет доступно в index.js? – user2498079

+0

Да, конечно, это переменная сеанса, она будет доступна для всех функций в текущем сеансе. –

+0

Как перенаправить файл index.ejs? Я пытаюсь выполнить res.redirect ('/'). Send (response); но он не работает. объект ответа содержит данные, которые будут использоваться файлом js на стороне клиента. – user2498079

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

  • Нет связанных вопросов^_^