如何在获取 post 调用后管理重定向请求
Posted
技术标签:
【中文标题】如何在获取 post 调用后管理重定向请求【英文标题】:How to manage a redirect request after a fetch post call 【发布时间】:2016-08-29 10:50:31 【问题描述】:我正在使用 fetch 与节点服务器(Express)进行通信。我正在建立一个SPA。在对服务器的每个请求中,我都会检查会话是否有效。如果会话无效,我将从节点重定向到登录页面。问题是这样的。如果会话失效(例如:get/post 请求在后台运行而没有刷新页面),则请求会静默失败。它没有被重定向。
我对 ajax 请求也有同样的问题。我所做的是通过检查请求是 xhr 并接受 json。然后发送一个 json 响应并在前端处理重定向。
if (req.xhr && req.accepts('json'))
res.json(status:'session_timeout');
else
res.redirect('/login');
如何使用 fetch 来做同样的事情。如何使用 fetch 和 node 处理重定向。
【问题讨论】:
【参考方案1】:我不确定您的代码如何确定会话是否有效。看起来您正在测试该请求是否是您从浏览器发送的请求,如果是,则使用 json 进行响应。
在这种情况下,何时会触发重定向?如果你总是从浏览器发送请求,它永远不会到达重定向语句。
您是否尝试过使用护照进行用户身份验证?您可以轻松设置可以包含在所有端点中的中间件,以便在用户尚未登录时重定向每个请求。
例如:
function isLoggedIn(req, res, next)
if (req.isAuthenticated())
return next();
res.redirect('/');
然后在你的 api 中:
app.get('/yourendpoint', isLoggedIn, function(req, res)
/*response here*/
);
);
【讨论】:
以上是关于如何在获取 post 调用后管理重定向请求的主要内容,如果未能解决你的问题,请参考以下文章