내 ExpressJS 응용 프로그램의 세션에 문제가 있습니다. 로컬에서는 완벽하게 작동하지만 AppFog에서 내 응용 프로그램을 호스팅 할 때 세션과 관련된 몇 가지 문제가 발생합니다. 때때로 손실됩니다 ... 내 관리자 패널에서. 페이지를 새로 고칠 때ExpressJS가 포함 된 AppFog의 세션
나는 ... 세션이 더 이상 일을, 왜 알지 모르겠지만
var restrictedArea = function(req, res, next) {
if(req.session.access)
next();
else
res.redirect('/signin');
}
// Get/Post example on admin panel
app.get('/posts/add', restrictedArea, admin.addPost);
app.post('/posts/add', restrictedArea, admin.savePost);
app.post('/posts/delete', restrictedArea, admin.deletePost);
app.get('/posts/edit/:id', restrictedArea, admin.editPost);
내 app.configure :
app.configure(function() {
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.static(path.join(__dirname, 'public')));
//app.use(express.session({secret: 'some secret'}));
app.use(express.cookieSession({
secret: 'SECRET',
cookie: { access: false }
})
);
app.use(express.session({secret: 'some secret'}));
app.use(app.router);
app.use(function(req, res, next){
res.render('404.jade', {
title: "404 - Page Not Found",
showFullNav: false,
status: 404,
url: req.url
});
});
});
내 경로 :
exports.authenticate = function(req, res) {
if(req.body.username == user.username && req.body.password == user.password){
req.session.access = true;
renderToAdminIndex(req, res);
}else{
req.session.access = false;
renderToSignin(req, res, "Error, please try again!");
}
}
signout 기능 :
당신이 명시 3.X를 사용하는 경우앤서니
세션 관리를 어떻게 초기화합니까? 너는 무엇을 사용하니? 쿠키? redis? –
내 주제를 내 app.configure()로 업데이트했습니다. - 쿠키를 사용합니다. – tonymx227
그래서 req.session.access는 값을 잃습니다. Chrome의 네트워크 속성을 사용하여 쿠키의 값을 확인해야합니다. –