自几周以来,我一直在从事实时聊天应用程序的工作。首先,我使用PHP作为后端语言,但对此感到不舒服,因此我切换到Node.js。我正在使用ExpressJS。但是,现在我有一个问题。我有一个页面,网站要求用户输入他/她的名字。(假设我们的网站是localhost:8080,单击“提交”后,信息(此处的名称)将发布到localhost:8080 / register)因此,在后端我这样做(考虑到app = express( )):
app.post('/register', (req, res) => {
var name = req.body.name // assuming the variable containg the username was **name**
// So, from here I can use the username any where I want
})
但是,问题是,如果另一个人输入了他/她,则服务器上所有用户的名称都会被最后输入的用户的名称更改。那么,我该怎么做才能保持其名称唯一?我的平台:Windows 10专业版
您在这里需要几个功能:
这意味着您不能将用户名存储在模块级别或全局变量中,因为用户名将被所有传入连接使用,而这并不是您想要的。
使用Express进行此类操作的通常方法是使用express-session。这将自动为任何传入请求设置cookie,然后为您提供一个对象,您可以在其中存储该用户的数据。每次用户向您的服务器发出请求时,他们的浏览器都会发送会话cookie,express-session可以查找该会话cookie并找到与该用户一起使用的数据对象。
然后,您将使用该对象首先设置用户名,然后在以后的请求中获取该特定用户的用户名。从那时起(直到会话终止),只要用户向服务器发出请求,您就可以在会话对象中查找其用户名。您也可以将其他特定于用户的数据放入该会话对象中。
使用默认的基于内存的存储机制时,express-session非常易于使用,您可以在doc中查看示例。
然后,您可能还需要某种类型的用户列表(可能只是在内存中,或者可能是在更持久的存储中,具体取决于您的需求),以便可以确保当有人选择新名称时,没有其他人在使用该名称。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句