【问题标题】:Where to store server side cookie in NodeJS?在 NodeJS 中存储服务器端 cookie 的位置?
【发布时间】:2015-01-07 23:01:20
【问题描述】:

我的后端/服务器正在调用需要身份验证的远程 REST 服务 apples。流程如下:

  1. 使用 ExpressJS $http 模块调用 http://remote.service.com/api/login。如果身份验证成功,此服务会返回有效的 cookie
  2. 使用 ExpressJS $http 模块调用http://remote.service.com/api/apples。并发送从第 1 步检索到的 cookie

由于服务器连续多次调用apple 服务,我想避免每次都进行身份验证,并且想了解如何存储第 1 步中的 cookie 以便下次可以重用它。我应该使用node-redis 还是ExpressJS cookie-parser?我应该如何处理 cookie 过期?

编辑: Cookie 可以保存在全局变量中。请参阅下面的 cmets。

【问题讨论】:

  • 这是为了响应客户的操作而完成的吗?或者这更像是一个维护脚本。如果它只是一个维护脚本,您可以将 cookie 存储在一个变量中,然后在后续迭代中,如果定义了该变量,则不要请求新的 cookie。
  • 远程服务调用可以由用户触发,也可以按预定的时间间隔运行。这意味着 cookie 不应存储在用户会话中
  • 而且,您是否有理由不能在第一次调用时请求 cookie 并将其存储在变量中,然后重复使用直到过期?
  • 您是为每个用户使用不同的凭据,还是在应用范围内使用相同的凭据
  • 是的,这就是我的建议。希望 401 请求相对较快。这样做会同时处理过期的 cookie,以及任何 cookie 被...提前销毁的机会。

标签: node.js cookies express node-redis


【解决方案1】:

您需要实现一个会话存储来保存会话令牌。虽然 MongoDB 本身可以做到这一点,但 Redis 是最好的选择之一。如果您不使用会话存储,则在集群模型中进行扩展最终会遇到麻烦,因为不同的应用服务器实例将无法识别另一台服务器授权的用户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    相关资源
    最近更新 更多