我正在尝试使用raw node.js存储客户端会话而不使用express。
当用户登录时,我有用户名和密码。现在,如何使用cookie在客户端浏览器中存储会话。以及如何在刷新选项卡或转到另一个链接时识别用户。我不想使用client-sessions
模块,因为我想了解该方法。
任何帮助将不胜感激。
答案 0 :(得分:3)
首先,我建议你观看 everything about authentication in NodeJS它很好地解释了一部分饼干。
您必须为浏览器提供一些数据,以便稍后使用,即cookies
。浏览器使用此数据向服务器显示它在之前为服务器处理了身份验证 ,并且用户无需重复即可继续。
在node.js中,使用client-sessions
模块,您可以通过调用
app.post('/login', function(req,res){
User.findOne({password: req.body.userPassword}, function(err, user){
if(user){
req.session.user = user; //here you are setting the cookie for the client,
}
})
})
您还可以通过添加属性来指定要设置的cookie类型
req.session.userEmail = user.email;
现在让我们检查服务器如何使用 身份验证
app.get('/someUrl', function(req,res){
if(req.session.user){
console.log("user exists!");
}
})
您可以使用session
object =>的req
属性来检查客户端向您发送的内容的 req.session
强>
要将其与您需要执行的数据库绑定,
if(req.session.user){
User.findOne({email: req.session.user.email}, func...)
}
基本上,对于客户端发送的每个请求,服务器使用此过程来识别cookie并使web-app用户友好而不重复。
就像在学校中为每个学生提供 ID 进行身份验证一样。
安全强>
为了安全起见,当我们在cookie-sessions
函数中添加secret
属性时,节点模块app.use()
会自动加密数据。请参阅using secret
in client-sessions module