在每个页面上,我检查用户是否已连接(即:如果用户会话处于活动状态)。
var sess;
app.get('/', function (req, res, next){
sess = req.session;
console.log(sess);
if(sess.userInfo !== undefined){
console.log(sess.userInfo.initStage);
if(sess.userInfo.initStage === 0){
res.render('index', { title: sess.userInfo });
}else {
res.redirect('/home');
}
}else {
res.redirect('/login');
}
});
它正在运作。
但是如果用户长时间在页面上并且系统需要进行ajax调用,则完成相同的检查但不重定向用户。
为什么?
我在我的php页面上包含validateSession();
function validateSession() {
if (!isset($_SESSION['CurrentLogged_USR_Id'])) {
header("Location: 'http://example.com');
}
}
,但是重定向不是make。
感谢。
答案 0 :(得分:2)
您无法在通过PHP
调用的AJAX
中重定向。而是返回一个标识该会话已过期的标志,并在JavaScript
中进行重定向。
以下是示例代码段。
$.ajax({
url: "urlToAJAX.php",
success: function(isSessionExpired){
if(isSessionExpired)
{
window.location = "http://example.com";
}
}});
答案 1 :(得分:0)
您可以遵循此代码。
<强>的Ajax 强>
$.ajax({
url:..
type:..
success(data){
if(data == "SESSION_EXPIRED"){
window.location = "your-login-page";
}
}
});
在PHP代码中,您可以检查会话是否可用。如果不回显字符串SESSION_EXPIRED
。