【发布时间】:2012-01-17 15:26:34
【问题描述】:
我有一个 asp.net mvc 3 移动应用程序,默认情况下,大多数智能手机都禁用了 cookie。我需要使用一些全局变量,并且在桌面版本的站点上我使用 cookie 来做到这一点。是否有无 cookie 的方式在会话中存储数据?我听说过会话变量,但不是也使用 cookie 吗?
【问题讨论】:
标签: asp.net-mvc-3 cookies
我有一个 asp.net mvc 3 移动应用程序,默认情况下,大多数智能手机都禁用了 cookie。我需要使用一些全局变量,并且在桌面版本的站点上我使用 cookie 来做到这一点。是否有无 cookie 的方式在会话中存储数据?我听说过会话变量,但不是也使用 cookie 吗?
【问题讨论】:
标签: asp.net-mvc-3 cookies
无 Cookie 会话应该可以为您解决问题。
<sessionState cookieless="true" />
有关此概念的更多信息:http://msdn.microsoft.com/en-us/library/aa479314.aspx
【讨论】:
如果您的对象不是用户特定的,您可以使用caching。如果它们是特定于用户的,那么您将需要使用 cookie 或 include the session id in the request URI。这样做确实会将您的应用程序打开到session hijacking,这可能会带来安全风险,具体取决于您的应用程序的工作方式。
【讨论】:
您可以在 URL 中使用参数来定义会话 ID,例如 http://www.mysite.com/m/{SessionID}/{controller}/{action}/{id} 其中“m”定义您网站的移动版本和您的唯一会话 ID 存储在 URL 中。您的所有 ActionLink 都会自动包含它们。
您需要将有关会话的信息存储在服务器上的某些存储中(数据库、文件系统、应用程序缓存)。
【讨论】: