簡體   English   中英

express-session req.user未定義

[英]express-session req.user is undefined

我正在嘗試使用Express Session登錄用戶。 我希望用戶能夠登錄到個人資料頁面並查看其用戶數據。

我已經被困在這里好幾天了。 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對象嗎?

任何幫助表示贊賞。 謝謝!

您應該按如下所示在route.js中定義isLoginedIn函數:

 // 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
        });
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM