node.js:connect-mongo和Remember me复选框

时间:2017-11-30 13:48:21

标签: node.js mongodb

我使用connect-mongo在DaaS中存储会话,然后在登录页面中添加了“记住我”复选框,但是当我不检查文本框时,它仍然会在会话表中写入会话。我想知道我做错了什么:

server.js:

// server.js

// set up ======================================================================
// get all the tools we need
var express  = require('express');
var app      = express();
var port     = process.env.PORT || 5000;
var mongoose = require('mongoose');
var passport = require('passport');
var flash    = require('connect-flash');

var morgan       = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser   = require('body-parser');
var session      = require('express-session');
var MongoStore   = require('connect-mongo')(session);

var path = require('path'); //join method
var configDB = require('./config/database.js');

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

// configuration ===============================================================
mongoose.connect(configDB.url, {useMongoClient : true}); // connect to our database



// set up our express application
app.use(express.static(path.join(__dirname, 'views')));    //angular and css files
app.use(morgan('dev')); // log every request to the console
app.use(cookieParser()); // read cookies (needed for auth)
app.use(bodyParser()); // get information from html forms
app.set('view engine', 'ejs'); // set up ejs for templating

//required for passport
app.use(session({
    store: new MongoStore({ mongooseConnection: mongoose.connection,  ttl: 14 * 24 * 60 * 60, autoRemove:'native', collection:'AllSessions' }),
    secret: 'foo'
}));
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions

// use connect-flash for flash messages stored in session
app.use(flash()); 

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


//log all other requests here
    app.get('*', (req, res) => {
        res.sendFile(path.join(__dirname, 'views'));
    });

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

routes.js(POST代码):

// process the login form
app.post('/login', passport.authenticate('local-login', {
    successRedirect: '/profile', // redirect to the secure profile section
    failureRedirect: '/login', // redirect back to the signup page if there is an error
    failureFlash: true // allow flash messages
}),

function(req, res, next)
{
    if (!req.body.remember_me)
    {
        return next();
    }
    else{
        app.use(session({
            store: new MongoStore({ mongooseConnection: mongoose.connection,  ttl: 14 * 24 * 60 * 60, autoRemove:'native', collection:'AllSessions' }),
            secret: 'foo'
        }));
    }
});

任何建议都表示赞赏。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您在点击记住我时尝试初始化会话,而不是这样做。使用极小的超时初始化会话,然后使用以下代码:

'selected'