【发布时间】:2014-05-12 18:17:14
【问题描述】:
我正在 node 和 express 中开发。我正在尝试记住我的登录信息。我在网上阅读了很多东西,但无法正常工作。不知道有没有receipe,有的话找不到了。
我正在尝试使用 redis 和 express 会话。并且正在部分工作。 如果重启节点服务器,或者关闭并重新打开 chrome。会话处于活动状态。所以进入“/”会将我重定向到“/index.html”。
但是如果我重新启动电脑,我会丢失会话。所以进入“/”会将我重定向到“登录” 这是我服务器上的一些重要代码:
var redisClient = require('redis').createClient();
var RedisStore = require('connect-redis')(express);
app.use(bodyParser());
app.use(cookieParser());
app.use(express.session({
store: new RedisStore({
host: 'localhost',
port: 6379,
db: 0,
cookie: { maxAge: (24*3600*1000*30)}, // 30 Days in ms
client : redisClient
}),
secret: 'seeeecret'
}));
app.get('/', function(req, res, next) {
res.redirect('/index.html');
});
app.post('/login', function(req, res) {
function loginSuccess() {
req.session.regenerate(function() {
req.session.user = req.body.usuario;
res.sendfile('index.html', {root: './static'});
});
}
function loginFailure(errText, errCode) {
console.log("failed to login. "+errCode+": "+errText);
res.redirect('/login');
}
//Imap email login (the user will authenticate with his email, end email's pass)
checkPassword(req.body.usuario, req.body.server, req.body.password, loginSuccess, loginFailure);
});
function restrict(req, res, next) {
if (req.session.user) {
next();
} else {
req.session.error = 'Access denied!';
res.redirect('/login');
}
}
【问题讨论】:
-
您确定您的 redis 服务器设置为将数据持久化到磁盘吗?
-
嗯几乎..我安装了以下官方文档。据我了解,它会保留数据。因为这就是它做(或不做)的事情
标签: node.js session express remember-me