ral*_*hie 7 session connect node.js express
有没有办法控制会话何时以connect的会话中间件启动?
例如,如果我有快递app配置:
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, ... }));
});
Run Code Online (Sandbox Code Playgroud)
然后在每个请求上,如果没有给出会话cookie,则启动会话.如果我只想在用户通过身份验证后才启动会话,该怎么办?
例如,假设我有两个途径/protected和/login.
/protected没有会话cookie的情况下命中,则中间件将不会启动新会话.(req.session是null)/protected会话cookie,中间件将检查是否存在与cookie匹配的活动会话并设置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
}
});
}
Run Code Online (Sandbox Code Playgroud)
有没有办法用现有的连接会话中间件完成这个?
即使每次都启动一个会话,也没关系,因为它会是空的。如果您尝试使用它来验证访问权限(似乎是这种情况),最简单的解决方案是在会话中设置一个属性(例如 req.session.authenticated = true;),然后进行检查。这样,从技术上讲,每个访问者都有一个会话,但是只有在 req.session.authenticated == true 时,您才会使用该会话。它可能不完全是您正在寻找的,但这是完成此任务的最简单方法。
| 归档时间: |
|
| 查看次数: |
1790 次 |
| 最近记录: |