成功登录后,我在Node express server
中向用户提供60分钟的认证会话。如果我的react app
中的用户想要获取子项列表,我必须检查身份验证,此处我有问题,我执行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'
),Eveythign工作正常,但如果用户只需点击按钮"获取儿童"会话过期后,节点将重定向到页面'/login'
。我如何在session expired
之后重定向?
答案 0 :(得分:1)
因为您无法使用服务器重定向从React重定向。 见thread。
答案 1 :(得分:1)
您必须在客户端处理它。在服务器响应中,抛出错误或发送正确的响应为"未经身份验证的"。在axios响应中,检查响应。如果响应为"未经身份验证",请清除会话/本地存储并将其重定向到" / login"。