有没有办法控制会话何时从 connect 的会话中间件开始?
例如,如果我有快速应用配置:
var app = express();
app.configure(function(){
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('secret'));
app.use(express.session({ store:sessionStore, ... }));
});
然后在每个请求上,如果没有给出会话 cookie,就会启动一个会话。如果我只想在用户通过身份验证后开始会话怎么办?
例如,假设我有两条路线/protected
和/login
.
- 如果有人
/protected
在没有会话 cookie 的情况下点击,中间件将不会启动新会话。(req.session
是null
) - 如果有人点击
/protected
了会话 cookie,中间件将检查是否存在与 cookie 和 set 匹配的活动会话req.session
,但不会启动新会话。(req.session
可以有一个值或者是null
) - 如果有人点击
/login
了正确的参数,则显式启动会话并仅设置 cookie。
启动会话的唯一方法应该是明确的:
app.post('/login', function(req, res, next) {
// connect to database and validate user...
db.authenticate( req.body.user, req.body.pass, function(allow) {
if (allow) {
// START SESSION HERE
// this will send set the cookie
}
});
}
有没有办法用现有的连接会话中间件来完成这个?