使用原始node.js和cookie在客户端的浏览器中存储会话而不使用express

时间:2017-08-23 16:25:59

标签: node.js session cookies client

我正在尝试使用raw node.js存储客户端会话而不使用express。

当用户登录时,我有用户名和密码。现在,如何使用cookie在客户端浏览器中存储会话。以及如何在刷新选项卡或转到另一个链接时识别用户。我不想使用client-sessions模块,因为我想了解该方法。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

首先,我建议你观看 everything about authentication in NodeJS它很好地解释了一部分饼干。

您必须为浏览器提供一些数据,以便稍后使用,即cookies。浏览器使用此数据向服务器显示它在之前为服务器处理了身份验证 ,并且用户无需重复即可继续。

在node.js中,使用client-sessions模块,您可以通过调用

来设置cookie
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