【问题标题】:Middleware to Check if a User is Authenticated in Node.js redirect在 Node.js 重定向中检查用户是否经过身份验证的中间件
【发布时间】:2018-09-15 03:56:14
【问题描述】:

成功登录后,我在Node express server 中为用户提供了 60 分钟的 Authenticated 会话。如果我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'),但如果用户在会话过期节点后单击“获取孩子”按钮不会重定向到页面'/login',Eveythign 工作正常。在session expired 之后如何重定向?

【问题讨论】:

    标签: node.js express next


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-29
        • 1970-01-01
        • 1970-01-01
        • 2018-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-09
        相关资源
        最近更新 更多