因此,在最长的时间里,我似乎无法弄清楚如何在Express中管理会话。是的,我在YouTube,Stack Over Flow等上到处都看过,对我来说根本没有任何意义。
因此,我了解基础知识,安装express-sessions
模块,然后需要它,然后在我们的应用程序中注册中间件。现在,通过执行request
,可以通过request.session
对象访问会话对象。好的,但是现在呢?
我认为我遇到的最大问题是如何实际维护用户的会话。在我最近的申请中,我有一个注册和登录页面。用户注册后,将提示他们登录。当用户在后端登录应用程序时,我首先检查所提供的详细信息是否与数据库匹配(如果匹配),然后在那儿我引用request.session
对象并在那里做一些事情。例如:
app.get('/login', (req, res) => {
// Get user login details.
var userSession = {
user: req.body.username,
sessID: req.sessionID
}
// Store the user session somewhere, either in a Session Store.
// or a database. For now I will store it in an array.
sessionArray.push(userSession);
});
好的,所以现在我们的数组将有一个用户会话。但是现在呢?每次用户尝试访问路由时,我需要检查用户会话权限吗?那不应该太难。但是,如果我们有不同的应用程序源怎么办?例如,我的VueJS应用程序位于端口8080上,而我的Express服务器位于端口3000上。每次尝试访问Vue应用程序上的路由时,我都会从Vue应用程序发送AJAX呼叫,并检查服务器是否存在会话/ username存在于我们将会话存储在其中的任何数据结构/存储中,如果存在,则会发送回结果,指示用户已登录并且可以使用。
这就是全部吗?这是我到目前为止遇到的最困难的事情。