【问题标题】:configure express req.session with cookie disabled配置 express req.session 禁用 cookie
【发布时间】:2013-07-31 03:13:08
【问题描述】:

我有一个带有 express 中间件的 node.js 网络服务器。出于性能原因,我试图消除会话存储的需要。到目前为止,我没有太多追踪。

但是,在登录后启动会话时,我确实需要跟踪用户名和用户 ID。我使用 express res.cookie( ... ) 实现了这一点,如果启用了 cookie,它就可以工作。但如果 cookie 被禁用,它将不起作用。

所以我正在查看 req.session 但它再次在内部使用 cookieSession。

Q1:如何跟踪用户名(一旦用户登录) 在浏览器中禁用 cookie 且 NO-SESSION-STORE 的多个请求中 (REDIS/MONGO 等)

Q2:在上面 Q1 的解决方案中,我希望 webserver 是无状态的, 所以它在任何时候都不会在内存中增长?

有可能吗?我的问题/要求是否有意义?我是新手。

本质上,我正在寻找一个除了 cookie 之外的对象,它可以是请求的一部分,每次发送/接收请求时都会进行通信

请帮忙

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    您可能会采取多种途径,因为听起来您可以控制请求者以及后端服务。

    • HTTP 标头
    • 查询字符串
    • Cookie

    我们知道 cookie 已过期。

    使用 HTTP 标头,除非您进行某种 AJAX 调用,否则您不能总是依赖它们。

    查询字符串要求您始终手动发回用户名或其他标识符。但是,它将解决 Q1 和 Q2。

    根据您的应用程序,重新架构端点可能是有意义的,以便它们是 ReSTful 并帮助定义操作 - 这样,将用户名作为请求 url 的一部分在语义上是有意义的。

    例如:

    GET http://example.com/:username => could display a profile
    GET http://example.com/:username/friends => could display a list of friends.
    

    根据您的应用程序的设计方式,您还可以利用 websockets 来处理用户连接和身份验证。

    【讨论】:

    • 感谢回复...现在我将采用 Google 的方式让用户知道 cookie 已被禁用,并要求他们启用是否要访问该站点...我将说明如何在 prod 工作....但我会在通知中保留您的建议...再次感谢
    • Np,祝你好运。除了采用我上面提到的 url 方案,您还可以将 ?uid=1u29nr39 附加到您的 url 并使用它来识别用户。请注意,使用查询字符串方法,您还必须跟踪其他信息以验证用户的真实性。告诉他们只启用 cookie 是一种更简单的方法 =)
    猜你喜欢
    • 2014-01-05
    • 2018-10-30
    • 2014-04-24
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多