- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图仅包含某些路由(身份验证路由)的 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
}));
您可以做的其他事情:
在 session 中间件上放置一个路径,以便仅针对站点中的某些路径调用它(所有经过身份验证的页面都应位于该路径下方)。
创建您自己的中间件处理程序,检查路径是否为 /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/
我有 virtualbox 4.3.28安装。我想降级到 virtualbox 4.3.26是否可以在不卸载/重新安装的情况下降级? 最佳答案 在大多数情况下,您可能希望先执行卸载,然后再进行安装。
我正在做一个图书馆。我有三个包: 电子表格是主包。 io 包是一个供内部使用的内部包。不幸的是,用户可以访问它们,因为它们是公共(public)类。 我想保留这个包,因为它允许我在编程时分离概念,但我
我是一名优秀的程序员,十分优秀!