我需要帮助理解Web应用程序的会话概念.我正在使用Express 3.0运行Node.js服务器.
为每个登录的用户创建会话
存储此会话并使用它来验证用户是否已登录(防止两个设备同时使用同一用户)并限制对某些页面的访问(通过将会话ID与其他一些数据相匹配)
我将使用MemoryStore来保存会话(看起来最简单).如果上述目标有意义,您能否提供如何实现这些目标的详尽说明?
http://www.javascriptkit.com/javatutors/cookie.shtml
另一方面,仅会话cookie将信息存储在浏览器存储器中,并且在浏览器会话期间可用.换句话说,存储在会话cookie中的数据从存储时起可用,直到浏览器关闭.在此期间从一个页面移动到另一个页面不会删除数据.
如何使用Express.js实现这一目标?
我使用 JavaScript 将哈希存储在会话存储中,如下所示:
window.sessionStorage.setItem('test', true);
Run Code Online (Sandbox Code Playgroud)
如何使用 node.js 读取此密钥?
我正在使用最新版本的node.js和session.socket.io,这就是我设置会话的方式(请注意我没有使用HTTPS连接,所以没有secure: true):
app.configure(function() {
app.use(cookieParser);
app.use(express.session({
signed: true,
store: sessionStore,
secret: 'SECRET',
cookie: {
maxAge: 24 * 60 * 60 * 1000,
httpOnly: true
}
}));
});
var sessionSockets = new SessionSockets(io, sessionStore, cookieParser);
// Later
sessionSockets.on('connection', function(error, socket, session) {
// session could be used here to detect if user is logged in
// e.g. login: session.name = 'x'; session.save();
// e.g. checkIfLoggedIn: if (session.name) return true;
});
Run Code Online (Sandbox Code Playgroud)
我的代码是安全/正确的,还是我如何验证用户是否真的登录?是否有可能/建议更改sid客户端上的cookie(由于此处提到)?