在Node.js重定向中检查用户是否经过身份验证的中间件

neskvpey  于 2023-05-28  发布在  Node.js
关注(0)|答案(2)|浏览(143)

成功登录后,我给予用户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之后重定向?

smtd7mpg

smtd7mpg1#

因为你不能从React重定向到服务器重定向。看这个thread

zzoitvuj

zzoitvuj2#

你必须在客户端处理它。在服务器响应中,抛出一个错误或发送一个正确的响应为“未经身份验证”。在axios响应中,检查响应。如果响应是“unauthenticated”,请清除您的会话/本地存储并将其重定向到“/login”。

相关问题