我正在研究以下
Connect
示例:
var connect = require ('connect');
var timeout = 30000; // session timeout: 30 seconds
var sessionOpts = {
secret: 'keyboard cat',
key: 'myapp_sid',
cookie: { maxAge: timeout, secure: true} /*Example doesn't work with secure?*/
};
var app = connect ()
.use (connect.favicon())
.use (connect.cookieParser ('keyboard cat'))
.use (connect.session(sessionOpts))
.use (function (req, res, next) {
var sess = req.session;
if (sess.views) {
res.setHeader ('Content-Type', 'text/html');
res.write ('<p>views: ' + sess.views + '</p>');
res.end();
sess.views++;
} else {
sess.views = 1;
res.end ('welcome to the session demo. refresh!');
}
})
.listen (3000);
当我访问该网站时,如果 cookie 选项不包含
secure: true
,则浏览次数会增加并在 30 秒后重置。当我包含安全选项时,会话不再停留 30 秒,每次刷新都会重置。
什么是安全选项以及如何将其与
Connect
的会话中间件一起使用?
secure
参数为 HTTP cookies 设置安全标志:
安全标志的目的是防止由于 cookie 以明文形式传输而被未经授权的各方观察到。 为了实现这一目标,支持安全标志的浏览器只会在请求转到 HTTPS 页面时发送带有安全标志的 cookie。换句话说,浏览器不会通过未加密的 HTTP 请求发送带有安全标志的 cookie。
在您的情况下,安全 cookie 可能根本不会发送,因为您没有通过 HTTPS 提供页面。