1

我正在寻找一种在 ASP.NET 中进行完全基于 cookie 的会话的方法。我不打算在其中存储复杂的对象,只是字符串键值对。

我正在寻找类似于 Play 的东西!框架处理会话,它基本上将所有会话数据编码在一个 cookie 中,并负责在每个请求上对其进行加密/解密。

如果可以避免的话,我不想为此编写自己的 SessionStateModule,是否存在?

谢谢

编辑:我不需要存储比 cookie 可以处理的更多的数据(只需几个标识符),我仍然需要键值对特定于每个会话。我想使用 cookie,这样就不必维护服务器状态(在进程中或在数据库中),这使我可以很容易地添加更多服务器,并且对外部应用程序的依赖也更少(没有状态服务器/memcached/redis 等)

4

2 回答 2

0

You won't be able to store that much data in a cookie unless you are going to create lots of them.

Given you want to work with key value pairs have considered using a cache such as memcached or redis. Or even the server cache if you are not in a web farm?

于 2012-09-27T07:23:16.247 回答
0

我认为不存在:由于使用 cookie 固有的限制(特别是最大大小),它会太脆弱。

而且我知道这不能回答您的问题,但我不会SessionStateModule为此实施 a 。这样做意味着任何使用 Session 的第 3 方组件,或任何使用 Session 的未来维护程序员可能会在 cookie 中存储不适当的数据(例如,太大)。

我建议您编写自己的面向 API 的循环存储键值对,在 cookie 中仅包含原始值(字符串、Int32、DateTime...)。

您还可以使 API “cookie-aware” - 例如设置 HttpCookie.Path,它使您可以:

  • 避免为不需要它们的请求发送 cookie(javascript、图像、...)

  • 为应用程序的不同区域设置不同的 cookie(名称相同但路径不同)。这有助于减小 cookie 的大小。

于 2012-09-27T07:30:17.810 回答