asp.net cache是否可以取代cookies ,求大神指点??
我发现cache虽然是存在服务器端的,但是 cache确实基于用户的,那么cache可以取代cookies吗??为什么??例如:登录后,将userid,username存到cache中;
另外我现在在开放微信项目,微信中把客户端的cookies禁用了,我想到了cache;
但是发现一个很严重的问题:cache不是基于用户的吗,为什么,别的用户经常可以获取到另外一个用户的cache呢??
[解决办法]
我是不是理解错了,sessionid是存在服务器端的cookies中么
你应该说Session是基于cookie的,因为服务器需要辨认当前访问是谁,你可以在cookie中看到有一个ASP.NET_SessionId,如果不用cookie,那你就要通过其它方法来确认当前访问用户到底是谁,而NET本身支持非cookie,方法就是将SessionId直接镶入到url中,但这其实非常蛋疼,他破坏了url的正确性。。。。
你的意思是 如果客户端禁用了cookies,那么session也会失效,是这样吗??因为sessionid也是存在cookie中的
应该这么说,不管客户端是否禁用cookie,服务端的Session都是在其作用的,但因为客户端禁用了cookie,服务端无法辨认当前访问者是谁,这时候它就会认为是一个全新的访问而重新分配一个sessionid给当前访问者
_____________________________________________________________________
客户端只负责保存相应网站的SessionID,而其他的Session信息则保存在服务器端。在ASP中,客户端的SessionID实际是以Cookie的形式存储的。如果用户在浏览器的设置中选择了禁用Cookie,那末他也就无法享受Session的便利之处了,甚至造成不能访问某些网站。为了解决以上问题,在ASP.NET中客户端的Session信息存储方式分为:Cookie和Cookieless两种。
ASP.NET中,默认状态下,在客户端还是使用Cookie存储Session信息的。如果我们想在客户端使用Cookieless的方式存储Session信息的方法如下:
找到当前Web应用程序的根目录,打开Web.Config文件,找到如下段落:
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
这段话中的cookieless="false"改为:cookieless="true",这样,客户端的Session信息就不再使用Cookie存储了,而是将其通过URL存储。关闭当前的IE,打开一个新IE,重新访问刚才的Web应用程序,就会看到类似下面的样子:
其中,http://localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245)/default.中黑体标出的就是客户端的Session ID。注意,这段信息是由IIS自动加上的,不会影响以前正常的连接。