rom*_*mir 10 session redis node.js express passport.js
到目前为止,我研究了stackoverflow关于在服务器重启后使会话持久化的答案.
我考虑用我的平均应用程序有4种可能的方式.
现在我的疑问是,我是否会在mongo和redis中重启我的服务器.会话仍然在那里,因为它们是外部数据存储.但是如何使用JWT和cookie会话使我的会话持久化.这些会话变量存储在何处.
在passport.js的情况下,我遇到的解决方案是使会话持久化是将会话数据存储在connect-mongo/connect-redis中.
护照中有没有其他方法可以使会话持续存在?
如果将会话存储在外部存储中,则重新启动后应该可用.
护照不对会话负责.您可以在快递中独立设置会话.Passport是身份验证中间件,具有使用会话的策略.你设置快递会话:
app.use(express.session(session options));
Run Code Online (Sandbox Code Playgroud)
然后,您启动并设置护照以使用会话:
app.use(passport.initialize());
app.use(passport.session());
Run Code Online (Sandbox Code Playgroud)
这意味着无论您是否使用护照,会话配置都是一样的.
有几种方法可以使会话持久化:大多数方法将会话存储在db或文件系统中(内存存储仅适用于dev env).请看这个npm搜索列表链接.
来自官方快递会话页面的兼容会话商店列表https://github.com/expressjs/session#compatible-session-stores
如果正确实施,Jwt令牌是无状态的.这意味着您的服务器不存储任何会话数据,它不知道有多少会话有效.如果它具有有效的jwt令牌,它会授权请求.
Jwt令牌可以存储一些数据,例如您的用户ID.当您的服务器接收令牌时,它会解码并验证,然后您就可以访问此令牌中的数据.请阅读这篇文章了解更多详情:
https://stormpath.com/blog/jwt-the-right-way/
最重要的部分(有更重要的事情,但有时会被遗忘):
在您信任JWT中的任何信息之前,请始终验证签名
和:
不要在JWT中包含任何敏感数据
请查看此模块以维护jwt:
https://www.npmjs.com/package/json-web-token
甚至对于某些混合解决方案模块(使用jwt令牌的redis会话):
https://www.npmjs.com/package/jwt-redis-session
| 归档时间: |
|
| 查看次数: |
4240 次 |
| 最近记录: |