节点中的条件 app.use - 表达
Conditional app.use in node - express
是否可以在app.js中有条件地使用app.use
?
表达 cookie-session can not change the value of maxAge
dynamically 我正在考虑做这样的事情,但我遇到了一些错误:
app.use(function(req,res,next ){
if(typeof req.session == 'undefined' || req.session.staySignedIn === 'undefined'){
//removing cookie at the end of the session
cookieSession({
httpOnly: true,
secure: false,
secureProxy: true,
keys: ['key1', 'key2']
});
}else{
//removing cookie after 30 days
cookieSession({
maxAge: 30*24*60*60*1000, //30 days
httpOnly: true,
secure: false,
secureProxy: true,
keys: ['key1', 'key2']
});
}
next();
});
而不是正常使用它:
app.use(cookieSession({
httpOnly: true,
secure: false,
secureProxy: true,
keys: ['key1', 'key2']
}));
现在我收到以下错误:
Cannot read property 'user' of undefined
我相信它指的是这一行(虽然它没有说具体在哪里)
req.session.user;
Express中的一个中间件是function (req, res, next) {}
这样的函数。在您的示例中,cookieSession(options)
将 return 这样的功能,但在您的中间件中您不会 运行 那个,您忽略 return 值 cookieSession
-即你想要 运行 的中间件。那你运行next()
.
您要做的是执行您的实际中间件,我们称之为条件中间件。像这样:
app.use(function (req, res, next) {
var options = {
httpOnly: true,
secure: false,
secureProxy: true,
keys: ['key1', 'key2']
};
if(typeof req.session == 'undefined' || req.session.staySignedIn === 'undefined') {
options.maxAge = 30*24*60*60*1000; // 30 days
}
return cookieSession(options)(req, res, next);
});
你可以使用这个插件Express Conditional Tree Middleware。
它允许您组合多个异步中间件。看看这个!您可以创建两个 类(一个用于您的第一个案例,一个用于您的第二个案例),分别在 applyMiddleware
函数中编写您的代码,然后将这些 类 导入您的主 [=16] =] 文件并使用 orChainer 组合它们。有关详细信息,请参阅文档!
是否可以在app.js中有条件地使用app.use
?
表达 cookie-session can not change the value of maxAge
dynamically 我正在考虑做这样的事情,但我遇到了一些错误:
app.use(function(req,res,next ){
if(typeof req.session == 'undefined' || req.session.staySignedIn === 'undefined'){
//removing cookie at the end of the session
cookieSession({
httpOnly: true,
secure: false,
secureProxy: true,
keys: ['key1', 'key2']
});
}else{
//removing cookie after 30 days
cookieSession({
maxAge: 30*24*60*60*1000, //30 days
httpOnly: true,
secure: false,
secureProxy: true,
keys: ['key1', 'key2']
});
}
next();
});
而不是正常使用它:
app.use(cookieSession({
httpOnly: true,
secure: false,
secureProxy: true,
keys: ['key1', 'key2']
}));
现在我收到以下错误:
Cannot read property 'user' of undefined
我相信它指的是这一行(虽然它没有说具体在哪里)
req.session.user;
Express中的一个中间件是function (req, res, next) {}
这样的函数。在您的示例中,cookieSession(options)
将 return 这样的功能,但在您的中间件中您不会 运行 那个,您忽略 return 值 cookieSession
-即你想要 运行 的中间件。那你运行next()
.
您要做的是执行您的实际中间件,我们称之为条件中间件。像这样:
app.use(function (req, res, next) {
var options = {
httpOnly: true,
secure: false,
secureProxy: true,
keys: ['key1', 'key2']
};
if(typeof req.session == 'undefined' || req.session.staySignedIn === 'undefined') {
options.maxAge = 30*24*60*60*1000; // 30 days
}
return cookieSession(options)(req, res, next);
});
你可以使用这个插件Express Conditional Tree Middleware。
它允许您组合多个异步中间件。看看这个!您可以创建两个 类(一个用于您的第一个案例,一个用于您的第二个案例),分别在 applyMiddleware
函数中编写您的代码,然后将这些 类 导入您的主 [=16] =] 文件并使用 orChainer 组合它们。有关详细信息,请参阅文档!