gpt4 book ai didi

node.js - 特定路线的特快套餐

转载 作者:太空宇宙 更新时间:2023-11-03 22:46:01 25 4
gpt4 key购买 nike

我试图仅包含某些路由(身份验证路由)的 session ,但由于错误页面路由而遇到问题:

我有这个:

    app.use(session({
secret: config.secrets.session,
saveUninitialized: false,
resave: false,
store: sessionStore,
proxy: true,
cookie: {
maxAge: config.token_duration,
secure: false
}
// rolling: false
}));


app.use('/api/user', require('./api/user'));
app.use('/api/auth', require('./api/auth'));

app.route(['/error/500','/error/404','/user/settings'])
.get((req, res) => {
res.sendFile(path.resolve(app.get('appPath') + '/index.html'));
});

app.route('/*/*')
.get(errors[404]);

app.use(errors[500]);

所以,如果我像这样使用它,我的应用程序中的所有页面都会创建一个 session (我不想要)。如果我将 session 部分移到错误路由之后,我将永远不会到达 api 路由,因为它将到达 404 路由。

提前致谢

最佳答案

中间件只能与某些路由关联,并且指定的顺序很重要。有多种方法可以做到这一点,如何最好地实现它取决于您的网站使用的路径以及如何最轻松地在路径之间创建链接以及是否应该在其上包含 session 中间件。

一件简单的事情就是将错误路由处理程序放在 session 中间件之前。然后,这些路由处理程序将首先“处理”请求,并且 session 中间件将永远不会被调用。

app.route(['/error/500','/error/404','/user/settings'])
.get((req, res) => {
res.sendFile(path.resolve(app.get('appPath') + '/index.html'));
});

app.use(session({
secret: config.secrets.session,
saveUninitialized: false,
resave: false,
store: sessionStore,
proxy: true,
cookie: {
maxAge: config.token_duration,
secure: false
}
// rolling: false
}));

您可以做的其他事情:

  1. 在 session 中间件上放置一个路径,以便仅针对站点中的某些路径调用它(所有经过身份验证的页面都应位于该路径下方)。

  2. 创建您自己的中间件处理程序,检查路径是否为 /error,如果不是,则调用 session 中间件处理程序。如果是/error,则不调用 session 中间件。

最后一个可以这样完成:

const sessionHandler = session({
secret: config.secrets.session,
saveUninitialized: false,
resave: false,
store: sessionStore,
proxy: true,
cookie: {
maxAge: config.token_duration,
secure: false
}
// rolling: false
});

app.use(function(req, res, next) {
// if path does not start with /error/, then invoke session middleware
if (req.url.indexOf("/error/") !== 0) {
return sessionHandler(req, res, next);
} else {
next();
}
});

关于node.js - 特定路线的特快套餐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42122046/

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