成功登录后,我给予用户60分钟的会话验证在Node express server
。如果我的react app
中的用户想要获取孩子的列表,我必须检查Authenticated,这里我有问题,我做axios请求get
,在我的文件app.js(node)
中我做:
app.get('/childrenList', isUserLoggedIn, function(req, res, next){
children.getChildrenList(req, res, next);
});
我的函数是UserLoggedIn
function isUserLoggedIn(req, res, next) {
if (!req.session.user_id || typeof(req.session.user_id)==='undefined') {
res.redirect('/login');
}
else{
next();
}
}
我的redux/actions函数
export function childrenList(objSql,type){
return {
type: type,
payload: new Promise((resolve, reject)=>{
axios.get('/childrenList', objSql,{
})
.then(function(response) {
resolve(response);
});
})
}
}
如果用户刷新页面(重定向到'/login'
),但如果用户在会话到期后单击按钮“获取孩子”,则Everythign工作正常,节点不会重定向到页面'/login'
。如何在session expired
之后重定向?
2条答案
按热度按时间smtd7mpg1#
因为你不能从React重定向到服务器重定向。看这个thread。
zzoitvuj2#
你必须在客户端处理它。在服务器响应中,抛出一个错误或发送一个正确的响应为“未经身份验证”。在axios响应中,检查响应。如果响应是“unauthenticated”,请清除您的会话/本地存储并将其重定向到“/login”。