积极答复者
判断用户会话已经结束是Context.User.Identity.Name还是Session?

问题
答案
-
谢谢大家的解答,经过几天查找和分析,我对自己问题的解答如下,供有同样困惑的网友参考。
问题得分情况解答:
(1)如果设置cookie是非持久性的,使用Context.User.Identity.Name == null和Session["xxxxx"]==null判断等效,即会话过期或者关闭网页,这两者都会变成null。
(2)如果设置cookie是持久性的,两者效果不同。Session["xxxxx"]在会话过期或者关闭网页后将变成null,而Context.User.Identity.Name 会根据cookie失效时间到期后变成null的。
结论:到底选择哪个,根据实际需求选择。如果碰到Session容易丢失并且安全要求比较高的话,可以考虑使用StateServer和SQL Server存储session。- 已标记为答案 sthma 2010年1月3日 4:55
全部回复
-
是用if (Context.User.Identity.Name == null || Context.User.Identity.Name == "")
还是if(Session["xxxxx"]==null) 好呢?
Session容易丢失,Context.User.Identity.Name不容易丢失(和Cookie生命周期一致),是否认为使用Context.User.Identity.Name判断要好一些?
请指点。
或者还有更好判断用户会话结束的方法?
谢谢!
看需求来决定用什么
如果想保存在客户端用cookie 如果想保存在服务端用session -
谢谢大家的解答,经过几天查找和分析,我对自己问题的解答如下,供有同样困惑的网友参考。
问题得分情况解答:
(1)如果设置cookie是非持久性的,使用Context.User.Identity.Name == null和Session["xxxxx"]==null判断等效,即会话过期或者关闭网页,这两者都会变成null。
(2)如果设置cookie是持久性的,两者效果不同。Session["xxxxx"]在会话过期或者关闭网页后将变成null,而Context.User.Identity.Name 会根据cookie失效时间到期后变成null的。
结论:到底选择哪个,根据实际需求选择。如果碰到Session容易丢失并且安全要求比较高的话,可以考虑使用StateServer和SQL Server存储session。- 已标记为答案 sthma 2010年1月3日 4:55