如何从passport.js获取用户会话?

时间:2015-03-18 11:45:09

标签: node.js session express passport.js

我的问题是我的项目中有2个文件:server.js(我将使用用户会话)和route.js(定义我的路由)。 我设法在routes.js中使用req.user()获取用户会话,但在app.js中没有

这是route.js的代码:

        module.exports = function(app, passport) {
        // LOGIN 
        // show the login form
        app.get('/', function(req, res) {
            // render the page and pass in any flash data if it exists
            res.render('login.ejs', { message: req.flash('loginMessage') });
        });

        // process the login form
        app.post('/login', passport.authenticate('local-login', {
                successRedirect : '/profile', // redirect to the secure profile section
                failureRedirect : '/', // redirect back to the signup page if there is an error
                failureFlash : true // allow flash messages
            }),
            function(req, res) {
                if (req.body.remember) {
                    req.session.cookie.maxAge = 1000 * 60 * 3;
                } else {
                    req.session.cookie.expires = false;
                }
                res.redirect('/');
            });

        // PROFILE SECTION =========================
        // we will want this protected so you have to be logged in to visit
        // we will use route middleware to verify this (the isLoggedIn function)



            app.get('/profile', isLoggedIn, function(req, res) {
            var a = req.user.Email;
            console.log(a);
            res.render('profile.ejs', {
                user : req.user // get the user out of session and pass to template
            });
        });
        // =====================================
        // LOGOUT ==============================
        // =====================================
        app.get('/logout', function(req, res) {
            req.logout();
            res.redirect('/');
        });
    };

    // route middleware to make sure
    function isLoggedIn(req, res, next) {

        // if user is authenticated in the session, carry on
        if (req.isAuthenticated())
            return next();

        // if they aren't redirect them to the home page
        res.redirect('/');
    }

和server.js:

            var express  = require('express');
            var app      = express();
            var port     = process.env.PORT || 8080;

            var passport = require('passport');
            var flash    = require('connect-flash');
            var server = require('http').createServer(app);


            // configuration ===============================================================

            require('./config/passport')(passport); // pass passport for configuration

            app.configure(function() {

                // set up our express application
                app.use(express.logger('dev')); // log every request to the console
                app.use(express.cookieParser()); // read cookies (needed for auth)
                app.use(express.bodyParser()); // get information from html forms




                    // Make the files in the public folder available to the world
                    app.use(express.static(__dirname + '/public'));

                // Tell express where it can find the templates
                    app.set('views', __dirname + '/views');


                app.set('view engine', 'ejs'); // set up ejs for templating

                // required for passport
                app.use(express.session({ secret: 'chiftestisalwaysrunning' } )); // session secret
                app.use(passport.initialize());
                app.use(passport.session()); // persistent login sessions
                app.use(flash()); // use connect-flash for flash messages stored in session

            });


            // routes ======================================================================
            require('./app/routes.js')(app, passport); // load our routes and pass in our app and fully configured passport

            /*i want to get the user session*/

            // launch ======================================================================
            server.listen(port);
            console.log('The magic happens on port ' + port);

0 个答案:

没有答案