【问题标题】:Web API Cookies and Session StorageWeb API Cookie 和会话存储
【发布时间】:2017-01-09 03:10:12
【问题描述】:

我们有一个由 OWIN Cookie 身份验证中间件发布的 cookie 保护的 Web API。

除了 Cookie Auth Middleware 生成的通用身份验证字段外,cookie 还存储自定义字段,例如用户 ID、姓名、...

在负载均衡器后面部署多个 Web API 实例的场景中,我们是否需要将会话持久化到 SQL/Redis/...中?

谢谢。

【问题讨论】:

  • 不,cookie 身份验证基于存储在客户端而不是会话中的 cookie 工作。所以你不需要为负载均衡做任何事情
  • 服务器不需要存储任何与cookies/sessions相关的东西吗?我试图从 Microsoft 找到参考,但找不到。你能为我指出正确的方向吗?谢谢。
  • Cookie 会在客户端到服务器的每个 HTTP 请求上发送,因此您无需存储在服务器端。我不确定我能否为您找到合适的,但您可以先四处搜索以获得更多了解。
  • 这也是我的理解,但我记得在某处读到会话存储仍用于存储 cookie 引用。谢谢!
  • 会话 ID 存储在 cookie 中 :),反之则不然

标签: c# session cookies asp.net-web-api owin


【解决方案1】:

因此,根据 Cuong Le 所说的话,查看 Microsoft.Owin.Security.Cookies 的 source code 可以看到默认情况下,服务器端不需要存储。

仅当设置了属性 IAuthenticationSessionStore 时才需要存储。源代码cmets说如下:

    /// <summary>
    /// An optional container in which to store the identity across requests. When used, only a session identifier is sent
    /// to the client. This can be used to mitigate potential problems with very large identities.
    /// </summary>
    public IAuthenticationSessionStore SessionStore { get; set; }

我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2011-07-20
    • 2019-05-08
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 2019-08-19
    • 2014-11-05
    • 2015-05-22
    相关资源
    最近更新 更多