繁体   English   中英

Node.js cookie和会话管理

[英]Node.js cookies and session management

在网上浏览有关cookie和会话的信息后,我将使用express和cookie / session(使用redis作为数据存储)在nodejs中创建一个简单的登录。

您认为用户登录后处理Cookie /会话的最佳方法是什么? 我心中也有这些问题:

  1. 如何防止使用userA cookie注入到userB的浏览器?
  2. 在执行任何过程之前,我需要检查cookie的值吗?
  3. 使用cookieParser是否可以确保connect.sid在每个浏览器中都是唯一的?
  4. app.use(session({secret: 'secretkey', key: 'quser'})); 这个secret到底是什么?

我无法决定如何正确使用它们。 多谢你们。

使用图书馆。

犯一个小错误并带来灾难性后果是一件容易的事。

我以前使用过Passport ,并且非常喜欢它。

这是一个类似的问题,得到了很好的答复: node.js的用户身份验证库?

根据会话中间件( https://github.com/expressjs/session

秘密-使用此秘密对会话cookie进行签名,以防止篡改。

秘密选项将确保您的cookie未被修改。

关于窃取Cookie和防止跨站点脚本编写的文章很多。 做到这一点的一种可能方法是通过提供选项httpOnly:true来使cookie无法用于javascript。

cookie - session cookie settings. (default: { path: '/', httpOnly:
true, secure: false, maxAge: null })

在执行任何过程之前,我需要检查cookie的值吗?

通常,您会在cookie中保留一些标识您的会话的信息,并将会话数据保留在服务器上。 您可以自己做,但是有一些很棒的库可以提供帮助。 在express中处理身份验证的最流行的方法之一是passport.js( http://passportjs.org/

在使用passportjs时,您将实现两种方法serializeUser和deserializeUser。 每次请求时都会调用它们,以基于cookie中保存的身份获取用户数据。 在这里您可以使用例如mongo或redis

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM