2016-07-04 3 views
1

Я пытаюсь написать код для моего маршрута, который, если session.user_id не определен, перенаправляется обратно на главную страницу. По какой-то причине перенаправление не выполняется, и условие mysql запущено, и он сбой сервера, потому что session.user_id не определен, и он не может загрузить игру без этих данных.Перенаправление, если сеанс недоступен. Node.js

Есть ли способ использовать универсальное перенаправление на всех маршрутах, если сеанс недоступен, перенаправлять обратно на логин?

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

       console.log(req.session.user_id); 

       if (req.session.user_id === "undefined") { 

       res.redirect('/'); 

       }else { 

       var condition = 'userId = ' + req.session.user_id; 

       projectX.allGameData(condition, function(data){ 

       var hbsObject = {heroes : data, logged_in: req.session.logged_in, isUser: req.session.isUser, isAdmin: req.session.isAdmin} 

       res.render('game', hbsObject); 

       }); 

       }; 

       }); 

ответ

1

Вы должны либо использовать: if (req.session.user_id === undefined)

OR if (typeof req.session.user_id === "undefined")

Кроме того, обычно лучше иметь функцию промежуточного программного обеспечения, которая проверяет сеанс пользователя. Таким образом, вы можете просто вставить вызов этого промежуточного слоя во всех маршрутах, которые требуют, чтобы пользователь вошел в систему:

router.get('/game', checkUserSession, function(req,res) { 
    // Your code here 
}); 

function checkUserSession(req, res, next) 
{ 
    if(req.session.user_id) 
    { 
     next(); 
    } 
    else 
    { 
     res.redirect('/homepage'); 
    } 
}//checkUserSession() 
1

Я предполагаю, что значение undefined, а не "undefined" (который является строкой, содержащей слово "неопределенными"):

if (req.session.user_id === undefined) { 
    ... 
} 
0
//Inject authHandler as middleware 
router.get('/my/route/', authHandler, (req, res) => { 
    //secure point, the authHandle went thru 
}); 
function authHandler(req, res, next) { 
    if (req.session.user_id) { 
     next(); 
    } 
    res.redirect('/login/'); 
} 

Добавить функцию для обработки проверки идентификации, а затем впрыснуть это промежуточное ПО к вашему маршрутизатору.

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