首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >护照持续期

护照持续期
EN

Stack Overflow用户
提问于 2014-04-23 16:54:39
回答 1查看 1.5K关注 0票数 4

我正在做一个带有快递、护照和mysql db的网页应用程序。

用户存储在我db上的一个表中,当用户登录时,应用程序在db上的user选项卡上查找条目,如果找到用户,则对其进行身份验证。一切正常,但当用户关闭浏览器时,会话被销毁,他需要再次登录。我希望用户能够登录,直到一个明确的注销。

我试着使用了快递-mysql-会话插件,它可以将会话保存在他的db表上,但仅此而已。

这是相关代码(省略了不相关的详细信息):

代码语言:javascript
运行
复制
var passport = require("passport");
var LocalStrategy = require('passport-local').Strategy;
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');
var SessionStore = require('express-mysql-session');

passport.serializeUser(function(user, done) {
        done(null, user);
});

passport.deserializeUser(function(user, done) {
    done(null, user);
});

passport.use(new LocalStrategy(function(username, password, done) {
    process.nextTick(function() {
        console.log('passport: veryfing user ...');
// sequelizejs looks for user...            
tabUser.find({ where: {nick: username, passwd: password}       }).success(function(myUser) {
            if (myUser) {
                console.log('passport: user authenticated !!');
                return done(null, myUser);
            } else {
                console.log('passport: auth failed !!');
                return done(null, false); 
            }
});
});
}));

app.use(session({key: 'session_cookie_name',
        secret: 'session_cookie_secret',
        store: new SessionStore(options)
}));
app.use(passport.initialize());
app.use(passport.session());

app.get('/login', function(req, res) {
    res.sendfile('views/login.html');
});

app.post('/login', passport.authenticate('local', { successRedirect: '/loginSuccess',  failureRedirect: '/loginFailure' }));

app.get('/account', ensureAuthenticated, function(req, res) {
    res.render('account', { user: req.user });
});

function ensureAuthenticated(req, res, next) {
    if (req.isAuthenticated()) {
        return next(); 
    }
    res.redirect('/login')
}

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-23 17:03:12

可以将express-session配置为在会话cookie上设置Max-Age

代码语言:javascript
运行
复制
app.use(express.session({
  cookie : {
    maxAge: 3600000 // see below
  },
  store : new MongoStore(...)
});
...
app.use(passport.session());
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23250709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档