2015-12-27 41 views
0

我正在尝试使用快速会话来登录用户。我希望用户能够访问个人资料页面并查看他们的用户数据(如果他们已登录)。快速会话req.user未定义

我一直在这里待了好几天。在我的routes.js文件的第33行中,在我的/profile GET路由中,req.user未定义。但是在我的routes.js的第27行中,在我的/login POST中,req.user按其应有的方式工作。

'use strict' 

var User = require('mongoose').model('User') 

module.exports = function(app, passport){ 
    console.log('passport', passport) 
    app.route('/') 
     .get(function(req, res){ 
      res.render('index') 
     }) 
    app.get('/signUp', function(req, res){ 
     res.render('signup') 
    }) 

    app.route('/user') 
     .get(function(req, res){ 
     }) 
     .post(passport.authenticate('local-signup', { successRedirect: '/', 
                 failureRedirect: 'signup' })) 

    app.route('/login') 
     .get(function(req, res){ 
      res.render('login') 
     }) 
     .post(passport.authenticate('local-login', { successRedirect: '/', 
                failureRedirect: '/login'}), function(req, res){ 
         /* *** LINE 27 *** */ console.log('req.user', req.user) 
                }) 

    app.route('/profile') 
     .get(function(req, res){ 

    /* *** LINE 33 *** */ console.log('req.user', req.user) 

      if(!req.user){ 
       res.render('profile', {user: "You're not logged in"}) 
      } 
      if(req.user){ 
       res.render('profile', {user: req.user}) 
      } 
     }) 
} 

为什么req.user定义在我所有的路由中?不应该在会话中填充持久的req.user对象?

任何帮助表示赞赏。谢谢!

回答

0

你应该routes.js定义isLoginedIn funtion如下:

// route middleware to ensure user is logged in 
function isLoggedIn(req, res, next) { 
    if (req.isAuthenticated()) 
     return next(); 

    res.redirect('/'); 
} 

然后更换:

app.route('/profile') 
     .get(function(req, res){ 

      console.log('req.user', req.user) 

      if(!req.user){ 
       res.render('profile', {user: "You're not logged in"}) 
      } 
      if(req.user){ 
       res.render('profile', {user: req.user}) 
      } 
     }) 

由:

// PROFILE SECTION ========================= 
    app.get('/profile', isLoggedIn, function(req, res) { 
     res.render('profile.ejs', { 
      user : req.user 
     }); 
    }); 
+0

感谢您的回答。 在isLoggedIn req.isAuthenticated返回false,因此此配置文件功能/路由不起作用。 https://gist.github.com/anonymous/6c0b267a75cc3dcfc682#file-routes-js-L9 – Casey