【问题标题】:Enable/disable ASP.NET session state programmatically?以编程方式启用/禁用 ASP.NET 会话状态?
【发布时间】:2010-02-25 18:17:48
【问题描述】:

我们的一位客户不希望在其网站的公共部分放置任何 cookie。当然,对于后端工具,我们广泛使用会话状态,但对于网站的公共部分来说,这并不是必需的。

是否可以只为匿名访问者关闭会话状态,而为登录用户保留它?

【问题讨论】:

  • FWIW 无 Cookie 会话不是一种选择,因为它们会与 WCF Web 服务混淆,并生成非常丑陋的 URL。
  • 恕我直言,最好的解决办法是不要在网站的公共部分使用会话变量(不认为这是必需的)
  • @Raja - 我认为这不会阻止 ASP.NET 放置 SessionID cookie。

标签: asp.net session cookies


【解决方案1】:

总之……不。

但您可以在逻辑上将您的应用程序分成不同的应用程序,这些应用程序对用户来说是无缝的。

即:

wwwroot\myapp(公共站点,无 cookie)
wwwroot\myapp\private(虚拟目录,实际上是不同的应用程序)

这当然要求所有公共部分在公共/登录用户之间的行为都没有不同。

【讨论】:

  • 对,不幸的是,登录用户看到了公共站点和编辑工具;所以我不能那样把它们分开。
【解决方案2】:

如果您只想避免静态文件(图像/javascript/css 等)的 cookie 开销,您可以设置一个无 cookie 域并从那里提供您的内容,这里有一个指南:http://www.ravelrumba.com/blog/static-cookieless-domain/

这可能会减少 90% 的 cookie 流量

您可能会使用相同的原则将已登录的用户引导到他们将登录并设置 cookie 的不同域。

如果他们不想要 cookie,因为这些 cookie 是第三方 cookie(该站点是从不同站点的 iframe 托管的)并且 IE 不允许将其作为默认设置,您可以使用 P3P 让 IE 相信它很酷: http://www.w3.org/P3P/

如果他们原则上不想要 cookie,那么你就有点不走运了,尽管 Asp.Net 确实支持无 cookie 会话,但即使在 ssl 上它们也不安全(在 url 中传输会话 id)和还有其他问题(丑陋的 url,WCF 抛出一个合适的等)如果客户对 cookie 很虔诚,这可能是一个可行的选择

【讨论】:

    猜你喜欢
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2011-02-06
    • 2011-03-04
    • 2013-07-03
    • 1970-01-01
    相关资源
    最近更新 更多