2010-02-24 67 views
3

我们的一位客户不希望在其网站的公开部分有任何cookies。当然,对于我们广泛使用会话状态的后端工具,对网站的公共部分来说并不是必须的。以编程方式启用/禁用ASP.NET会话状态?

是否有可能只是关闭会话状态为匿名用户,但离开它登录的用户?

+0

FWIW Cookie会话是不是一种选择,因为他们惹WCF Web服务和使非常丑陋的网址。 – 2010-02-24 16:29:26

+0

恕我直言出来的最好的方法是在网站的公共部分不使用会话变量(不认为这是必需的) – Raja 2010-02-24 17:06:38

+0

@Raja - 我不认为这会阻止ASP.NET从放下一的SessionID曲奇饼。 – 2010-02-25 11:42:06

回答

1

一句话......没有。

但是你可以在逻辑上你的应用分成不同的应用程序,无缝的出现给用户。

即:

的wwwroot \ MYAPP(公共网站,任何Cookie)
的wwwroot \ MYAPP \私人(虚拟目录,实际上是一个不同的应用程序)

这当然需要,没有一个公共的部件在公共/登录用户之间表现不同。

+0

正确,不幸的是,登录用户可以看到公共站点和编辑工具;所以我不能将它们分开。 – 2010-02-25 11:43:44

1

,如果你想要的是避免cookie的开销为静态文件(影像/使用Javascript/CSS等),你可以建立一个使用Cookie的域,并从那里为你的内容,一个导向这里:http://www.ravelrumba.com/blog/static-cookieless-domain/

这可能会削减饼干流量由90%

你也许可以使用相同的princible指导登录的用户到不同的领域,他们将登录并设置cookie。

如果他们不想要cookie,因为这些cookie会是第三方cookie(该网站由iframe在不同网站上托管),并且IE不允许将其作为默认cookie,您可以使用P3P来说服IE浏览器很酷:http://www.w3.org/P3P/

如果他们不希望cookie作为一个原则问题,那么你有点失去运气,尽管Asp.Net确实支持无Cookie会话,但即使在ssl上它们也不安全(传输会话ID在URL),并有其他问题(丑陋的URL,WCF抛出一个装等),这可能是一个可行的选择,但如果客户端上的cookie宗教

+0

是的 - 这是一个宗教的东西,不是一个表演的东西。 – 2010-02-25 11:44:41