gpt4 book ai didi

javascript - 在 Express JS 中处理重定向,同时避免重定向循环

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:56 27 4
gpt4 key购买 nike

这是我第一次使用 Express 的 app.all()。当用户通过外部 oAuth 提供商注册时,我仍然需要他们在返回网站后提供电子邮件。我基本上将它们在数据库中设置为非事件状态并检查 req.session.active

我正在做的是

app.all('*', function(req, res, next) {
if(!req.session.active) {
if(req.path == '/complete_signup') {
next();
} else {
return res.redirect('/complete_signup');
}
}
});

但这似乎不起作用。如何正确检查用户是否已重定向?

如果您可以建议除 app.all() 之外的方法,那也可以。

编辑:

再一看,这是有效的,但似乎没有加载任何外部资源(样式表、JavaScript 等),因为它们与 req.path 不匹配。

最佳答案

您可以使用 express-redirect-loop 中间件(它使用 session ,因为 HTTP Referrer header 不可靠)。这仅适用于支持 cookie 存储/jar 的请求(例如浏览器)。

const express = require('express');
const session = require('express-session');
const redirectLoop = require('express-redirect-loop');

const app = express();

app.use(
session({
secret: 'test',
resave: false,
saveUninitialized: true
})
);

app.use(redirectLoop());

app.get('/', (req, res) => res.sendStatus(200));
app.get('/bar', (req, res) => res.redirect('/foo'));
app.get('/foo', (req, res) => res.redirect('/foo'));
app.get('/baz', (req, res) => res.redirect('/bar'));

app.listen(3000);

关于javascript - 在 Express JS 中处理重定向,同时避免重定向循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8839543/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com