asp.net 除了session 和 cookies 还有其它办法保存用户登录信息吗?

时间:2022-10-01 07:54:58
网站采用session保存用户登录信息

通过IE7新标签打开同一网站,由于不是新开IE(是同一进程,TT,firefox也是这样),所以session ID是一样的

后登录的用户,会把上一标签用户信息覆盖?求解决方案。

55 个解决方案

#1


我不清楚你的需求,但是我之前也遇到过类似的问题。开始我是用session保存的用户信息,pageload的时候,把信息存入session中,再用的话就从里面取就可以了。但是后来发现,如果是不同用户用同一台电脑登陆的话就会覆盖掉先前的session里的信息,最后整个页面改成了ajax用js实现的。

#2


通过IE7新标签打开同一网站,两个不同用户登户,刷新第一个用户的页面,此页面所有信息都是后登录用户的信息。说明前一个用户不存在了,只留下了后面的登录用户。

除了session 和 cookies 还有其它办法保存用户登录信息吗?

#3


如果不同用户不会用同一台电脑登陆的话,用session完全可以,你完全可以用用户名做session的id,在pageload时候就根据不同用户给他们分配好session,以后用的时候根据自己的用户id去取session里的信息就可以, 这样的话是不会遇到重复和覆盖的问题。但是大前提是,必须不能是不同用户用同一台电脑

#4


引用 1 楼 luckzhuang 的回复:
我不清楚你的需求,但是我之前也遇到过类似的问题。开始我是用session保存的用户信息,pageload的时候,把信息存入session中,再用的话就从里面取就可以了。但是后来发现,如果是不同用户用同一台电脑登陆的话就会覆盖掉先前的session里的信息,最后整个页面改成了ajax用js实现的。


能不能说得详细点,整个站点每个页面都用到了 session, CS代码中处处调用session,用ajax如何实现?

#5


现在我需要的就是要同一电脑,同一浏览器,产生同一sessionid,解决不同用户登录信息的存储,调用问题?

#6


引用 5 楼 yxtyxt3311 的回复:
现在我需要的就是要同一电脑,同一浏览器,产生同一sessionid,解决不同用户登录信息的存储,调用问题?

估计这样有难度呀!

#7


把Session值赋给ViewState,保存在本页。。

#8


是有难度,我们就是要向难度挑战。。。

没难度,哪有进步,同意的支持一下。。。

#9


引用 7 楼 lixinramaxel41658133 的回复:
把Session值赋给ViewState,保存在本页。。



整个站点,随便跳转就没有了。。。

#10


引用 9 楼 yxtyxt3311 的回复:
引用 7 楼 lixinramaxel41658133 的回复:
 把Session值赋给ViewState,保存在本页。。



 整个站点,随便跳转就没有了。。。

先用ViewState保存,跳转的时候一起把ViewState里面的值传过去跳转就行了

#11


顶哦。我也遇到了相同的问题。

因为要在本机以各个不同会员的身份登录进去。

所以保存登录信息经常被覆盖或者混乱掉勒。

#12


ViewState保存本页的数据,在每个页面进行跳转传值,再获取,这样虽然麻烦一点,但可以解决问题

#13


学习

#14


一直传过去。
APPLICATION也行的。

#15


引用 12 楼 yh7272hy 的回复:
ViewState保存本页的数据,在每个页面进行跳转传值,再获取,这样虽然麻烦一点,但可以解决问题


承认可以,就像你所说的麻烦一点。。等待更好的解决方案。。。

#16


用缓存cache

#17


帮顶。。。

#18


这个问题我遇见过,无法解决。

只能让在同一台电脑上登录的多个用户,必须打开各自独立的ie了。

#19


可以用viewstate,不过只能在一个页面中使用。

#20


Global.asax全局配置程序的Application["xxx"]="xxxx";
还有就是你将登陆信息存在数据库里,这个最安全可靠!其它都是不可靠的,会丢失

#21


lz的小白真多!竟然还用Application["xxx"]="xxxx"; !
不是误人子弟啊!都说是用户个人的一些参数了,拿肯定是不同用户不一样的值啊,真F了!

#22


引用 15 楼 yxtyxt3311 的回复:
引用 12 楼 yh7272hy 的回复:
 ViewState保存本页的数据,在每个页面进行跳转传值,再获取,这样虽然麻烦一点,但可以解决问题


 承认可以,就像你所说的麻烦一点。。等待更好的解决方案。。。

还有一种方当就是写到数据库了,建一张用户登陆信息表,每一个新用户进来都往里面插一条数据,其余页面要用到的话就从数据库里面读取,这样安全可靠,但耗性能,这两种方法都可供选择!

#23


引用 22 楼 yh7272hy 的回复:
引用 15 楼 yxtyxt3311 的回复:
引用 12 楼 yh7272hy 的回复:
ViewState保存本页的数据,在每个页面进行跳转传值,再获取,这样虽然麻烦一点,但可以解决问题


承认可以,就像你所说的麻烦一点。。等待更好的解决方案。。。

还有一种方当就是写到数据库了,建一张用户登陆信息表,每一个新用户进来都往里面插一条数据,其余页面要用到的话就从数据库里面读取,这样安全可靠,但耗性能,这两种方法都可供选择!


数据库,就是因为session被覆盖了,页面的跳转,就是搞不清谁是谁,你知道当前用户是哪个人吗?

#24


Cookies里有值所有无论怎么登陆都会跳转到非登陆页,你说的那方法就是登陆页每次都可以进,然后每次都保存新的Cookies,在登陆页判断下不行吗? 只要登陆就打开新页面,不能实现吗?

#25


appliction也可以

#26


保存在cookie里 是可行的 裸奔哥

#27


建议用cookie,另外可尝试下profile...

#28


定义一个全局静态变量啊,用起来也差不多吧
public static aa;

#29


Mark

#30


每一个session是通过自己的session id来识别的。
session id在 浏览器打开的时候是自动通过cookie在各个网页内通信的。
如果你关掉浏览器,这个cookie过期,所以下次你找不到上次的session 了。
楼主可以将session id持久化,在用户登陆时,先取出这个session id ,根据这个session id 取session,如果session不为空,就直接使用这个session,跳过登陆过程,否则需要重新登陆一次。 
最主要还是按照不同的需求看

#31


通常保存用户信息方式:Cache Session Cookie.

#32


给每个用户分配一个子域名.

#33


和各位学习了!

#35


路径传值,到那个页面传到那个页面

#36


引用 24 楼 huyou1983218 的回复:
Cookies里有值所有无论怎么登陆都会跳转到非登陆页,你说的那方法就是登陆页每次都可以进,然后每次都保存新的Cookies,在登陆页判断下不行吗? 只要登陆就打开新页面,不能实现吗?


请看题,同一站点,同一IE打开,不同用户登录,
我就存一个username,cookies命名如何命,你知道当前页面,如何取哪个cookies?

#37


引用 30 楼 zjybushiren88888 的回复:
每一个session是通过自己的session id来识别的。
session id在 浏览器打开的时候是自动通过cookie在各个网页内通信的。
如果你关掉浏览器,这个cookie过期,所以下次你找不到上次的session 了。
楼主可以将session id持久化,在用户登陆时,先取出这个session id ,根据这个session id 取session,如果session不为空,就直接使用这个session,跳过登陆过程,否则需要重新登陆一次。
最主要还是按照不同的需求看


如何持久,你用TT浏览器打开,同一网站,不同用户登录,两个页面sessionID都是一样,你如何区别两个用户。。。

#38


引用 35 楼 qiu543999120 的回复:
路径传值,到那个页面传到那个页面


上面已说过,我承认可以,但太不实用了,如果有什么分页,列表页,列表页中又有链接,我不是要做死人。

#39


马克 学习

#40


无人关注了吗?

#41


session里保存用户的id,服务端持久化于数据库
客户端持久化于cookie,其实session就是默认用的cookie,要不然就是url参数

#42


不可能的事情啊

好多人误人子弟
这好比你一个函数定义了两个相同的变量

你要知道不管cookies还是session的登录标志都是以cookies形式保存在IE进程的

就那session来说
IE进程保存ASP.NET_SessionId=wb5l2vjnafpj5055hknwn0nb这个用户
你新的用户登录了IE进程就变成了ASP.NET_SessionId=uz3lyyizveiypubml0rq0x55这个用户
一个变理怎么可能变成两个用户

#43


存在Cookie里吧...

#44


up

#45


mark....

#46


引用 42 楼 chen_lichao 的回复:
不可能的事情啊

好多人误人子弟
这好比你一个函数定义了两个相同的变量

你要知道不管cookies还是session的登录标志都是以cookies形式保存在IE进程的

就那session来说
IE进程保存ASP.NET_SessionId=wb5l2vjnafpj5055hknwn0nb这个用户
你新的用户登录了IE进程就变成了ASP.NET_SessionId=uz3lyyizveiypubml0rq0x55这个用户
一个变理怎么可能变成两个用户


呵呵,他们不会误导我,我知道sessionID是一样的,就是要求解,sessionID一样的方案...

#47


引用 32 楼 sbwwkmyd 的回复:
给每个用户分配一个子域名.

也可以给用户分配目录,可能要用到url重写,程序修改比较多,比子域名处理要麻烦.利用子域名或目录名区分用户不就解决了吗?

#48


引用 8 楼 yxtyxt3311 的回复:
是有难度,我们就是要向难度挑战。。。

 没难度,哪有进步,同意的支持一下。。。


你去看看腾讯吧,或者google也行,也存在这个问题,并且大多数知名网站都有这个问题

如果你觉得你的技术比他们还要牛的话,那就继续研究

不过我认为这个问题是存在的,并且其他的方案都没有session,比如上面有人说用cookie,viewstate都没有session方便与安全

没必要专牛角尖

#49


引用 47 楼 sbwwkmyd 的回复:
引用 32 楼 sbwwkmyd 的回复:
 给每个用户分配一个子域名.

 也可以给用户分配目录,可能要用到url重写,程序修改比较多,比子域名处理要麻烦.利用子域名或目录名区分用户不就解决了吗?


晕 
什么跟什么哦

#50


引用 48 楼 jaylongli 的回复:
引用 8 楼 yxtyxt3311 的回复:
是有难度,我们就是要向难度挑战。。。

没难度,哪有进步,同意的支持一下。。。


你去看看腾讯吧,或者google也行,也存在这个问题,并且大多数知名网站都有这个问题

如果你觉得你的技术比他们还要牛的话,那就继续研究

不过我认为这个问题是存在的,并且其他的方案都没有session,比如上面有人说用cookie,viewstate都没有session方便与安全

没必要专牛角尖


呵呵,我也想,我们老大就是要专牛角尖,做下属不容易呀,这年头,做啥都不容易呀。。。

#1


我不清楚你的需求,但是我之前也遇到过类似的问题。开始我是用session保存的用户信息,pageload的时候,把信息存入session中,再用的话就从里面取就可以了。但是后来发现,如果是不同用户用同一台电脑登陆的话就会覆盖掉先前的session里的信息,最后整个页面改成了ajax用js实现的。

#2


通过IE7新标签打开同一网站,两个不同用户登户,刷新第一个用户的页面,此页面所有信息都是后登录用户的信息。说明前一个用户不存在了,只留下了后面的登录用户。

除了session 和 cookies 还有其它办法保存用户登录信息吗?

#3


如果不同用户不会用同一台电脑登陆的话,用session完全可以,你完全可以用用户名做session的id,在pageload时候就根据不同用户给他们分配好session,以后用的时候根据自己的用户id去取session里的信息就可以, 这样的话是不会遇到重复和覆盖的问题。但是大前提是,必须不能是不同用户用同一台电脑

#4


引用 1 楼 luckzhuang 的回复:
我不清楚你的需求,但是我之前也遇到过类似的问题。开始我是用session保存的用户信息,pageload的时候,把信息存入session中,再用的话就从里面取就可以了。但是后来发现,如果是不同用户用同一台电脑登陆的话就会覆盖掉先前的session里的信息,最后整个页面改成了ajax用js实现的。


能不能说得详细点,整个站点每个页面都用到了 session, CS代码中处处调用session,用ajax如何实现?

#5


现在我需要的就是要同一电脑,同一浏览器,产生同一sessionid,解决不同用户登录信息的存储,调用问题?

#6


引用 5 楼 yxtyxt3311 的回复:
现在我需要的就是要同一电脑,同一浏览器,产生同一sessionid,解决不同用户登录信息的存储,调用问题?

估计这样有难度呀!

#7


把Session值赋给ViewState,保存在本页。。

#8


是有难度,我们就是要向难度挑战。。。

没难度,哪有进步,同意的支持一下。。。

#9


引用 7 楼 lixinramaxel41658133 的回复:
把Session值赋给ViewState,保存在本页。。



整个站点,随便跳转就没有了。。。

#10


引用 9 楼 yxtyxt3311 的回复:
引用 7 楼 lixinramaxel41658133 的回复:
 把Session值赋给ViewState,保存在本页。。



 整个站点,随便跳转就没有了。。。

先用ViewState保存,跳转的时候一起把ViewState里面的值传过去跳转就行了

#11


顶哦。我也遇到了相同的问题。

因为要在本机以各个不同会员的身份登录进去。

所以保存登录信息经常被覆盖或者混乱掉勒。

#12


ViewState保存本页的数据,在每个页面进行跳转传值,再获取,这样虽然麻烦一点,但可以解决问题

#13


学习

#14


一直传过去。
APPLICATION也行的。

#15


引用 12 楼 yh7272hy 的回复:
ViewState保存本页的数据,在每个页面进行跳转传值,再获取,这样虽然麻烦一点,但可以解决问题


承认可以,就像你所说的麻烦一点。。等待更好的解决方案。。。

#16


用缓存cache

#17


帮顶。。。

#18


这个问题我遇见过,无法解决。

只能让在同一台电脑上登录的多个用户,必须打开各自独立的ie了。

#19


可以用viewstate,不过只能在一个页面中使用。

#20


Global.asax全局配置程序的Application["xxx"]="xxxx";
还有就是你将登陆信息存在数据库里,这个最安全可靠!其它都是不可靠的,会丢失

#21


lz的小白真多!竟然还用Application["xxx"]="xxxx"; !
不是误人子弟啊!都说是用户个人的一些参数了,拿肯定是不同用户不一样的值啊,真F了!

#22


引用 15 楼 yxtyxt3311 的回复:
引用 12 楼 yh7272hy 的回复:
 ViewState保存本页的数据,在每个页面进行跳转传值,再获取,这样虽然麻烦一点,但可以解决问题


 承认可以,就像你所说的麻烦一点。。等待更好的解决方案。。。

还有一种方当就是写到数据库了,建一张用户登陆信息表,每一个新用户进来都往里面插一条数据,其余页面要用到的话就从数据库里面读取,这样安全可靠,但耗性能,这两种方法都可供选择!

#23


引用 22 楼 yh7272hy 的回复:
引用 15 楼 yxtyxt3311 的回复:
引用 12 楼 yh7272hy 的回复:
ViewState保存本页的数据,在每个页面进行跳转传值,再获取,这样虽然麻烦一点,但可以解决问题


承认可以,就像你所说的麻烦一点。。等待更好的解决方案。。。

还有一种方当就是写到数据库了,建一张用户登陆信息表,每一个新用户进来都往里面插一条数据,其余页面要用到的话就从数据库里面读取,这样安全可靠,但耗性能,这两种方法都可供选择!


数据库,就是因为session被覆盖了,页面的跳转,就是搞不清谁是谁,你知道当前用户是哪个人吗?

#24


Cookies里有值所有无论怎么登陆都会跳转到非登陆页,你说的那方法就是登陆页每次都可以进,然后每次都保存新的Cookies,在登陆页判断下不行吗? 只要登陆就打开新页面,不能实现吗?

#25


appliction也可以

#26


保存在cookie里 是可行的 裸奔哥

#27


建议用cookie,另外可尝试下profile...

#28


定义一个全局静态变量啊,用起来也差不多吧
public static aa;

#29


Mark

#30


每一个session是通过自己的session id来识别的。
session id在 浏览器打开的时候是自动通过cookie在各个网页内通信的。
如果你关掉浏览器,这个cookie过期,所以下次你找不到上次的session 了。
楼主可以将session id持久化,在用户登陆时,先取出这个session id ,根据这个session id 取session,如果session不为空,就直接使用这个session,跳过登陆过程,否则需要重新登陆一次。 
最主要还是按照不同的需求看

#31


通常保存用户信息方式:Cache Session Cookie.

#32


给每个用户分配一个子域名.

#33


和各位学习了!

#34


#35


路径传值,到那个页面传到那个页面

#36


引用 24 楼 huyou1983218 的回复:
Cookies里有值所有无论怎么登陆都会跳转到非登陆页,你说的那方法就是登陆页每次都可以进,然后每次都保存新的Cookies,在登陆页判断下不行吗? 只要登陆就打开新页面,不能实现吗?


请看题,同一站点,同一IE打开,不同用户登录,
我就存一个username,cookies命名如何命,你知道当前页面,如何取哪个cookies?

#37


引用 30 楼 zjybushiren88888 的回复:
每一个session是通过自己的session id来识别的。
session id在 浏览器打开的时候是自动通过cookie在各个网页内通信的。
如果你关掉浏览器,这个cookie过期,所以下次你找不到上次的session 了。
楼主可以将session id持久化,在用户登陆时,先取出这个session id ,根据这个session id 取session,如果session不为空,就直接使用这个session,跳过登陆过程,否则需要重新登陆一次。
最主要还是按照不同的需求看


如何持久,你用TT浏览器打开,同一网站,不同用户登录,两个页面sessionID都是一样,你如何区别两个用户。。。

#38


引用 35 楼 qiu543999120 的回复:
路径传值,到那个页面传到那个页面


上面已说过,我承认可以,但太不实用了,如果有什么分页,列表页,列表页中又有链接,我不是要做死人。

#39


马克 学习

#40


无人关注了吗?

#41


session里保存用户的id,服务端持久化于数据库
客户端持久化于cookie,其实session就是默认用的cookie,要不然就是url参数

#42


不可能的事情啊

好多人误人子弟
这好比你一个函数定义了两个相同的变量

你要知道不管cookies还是session的登录标志都是以cookies形式保存在IE进程的

就那session来说
IE进程保存ASP.NET_SessionId=wb5l2vjnafpj5055hknwn0nb这个用户
你新的用户登录了IE进程就变成了ASP.NET_SessionId=uz3lyyizveiypubml0rq0x55这个用户
一个变理怎么可能变成两个用户

#43


存在Cookie里吧...

#44


up

#45


mark....

#46


引用 42 楼 chen_lichao 的回复:
不可能的事情啊

好多人误人子弟
这好比你一个函数定义了两个相同的变量

你要知道不管cookies还是session的登录标志都是以cookies形式保存在IE进程的

就那session来说
IE进程保存ASP.NET_SessionId=wb5l2vjnafpj5055hknwn0nb这个用户
你新的用户登录了IE进程就变成了ASP.NET_SessionId=uz3lyyizveiypubml0rq0x55这个用户
一个变理怎么可能变成两个用户


呵呵,他们不会误导我,我知道sessionID是一样的,就是要求解,sessionID一样的方案...

#47


引用 32 楼 sbwwkmyd 的回复:
给每个用户分配一个子域名.

也可以给用户分配目录,可能要用到url重写,程序修改比较多,比子域名处理要麻烦.利用子域名或目录名区分用户不就解决了吗?

#48


引用 8 楼 yxtyxt3311 的回复:
是有难度,我们就是要向难度挑战。。。

 没难度,哪有进步,同意的支持一下。。。


你去看看腾讯吧,或者google也行,也存在这个问题,并且大多数知名网站都有这个问题

如果你觉得你的技术比他们还要牛的话,那就继续研究

不过我认为这个问题是存在的,并且其他的方案都没有session,比如上面有人说用cookie,viewstate都没有session方便与安全

没必要专牛角尖

#49


引用 47 楼 sbwwkmyd 的回复:
引用 32 楼 sbwwkmyd 的回复:
 给每个用户分配一个子域名.

 也可以给用户分配目录,可能要用到url重写,程序修改比较多,比子域名处理要麻烦.利用子域名或目录名区分用户不就解决了吗?


晕 
什么跟什么哦

#50


引用 48 楼 jaylongli 的回复:
引用 8 楼 yxtyxt3311 的回复:
是有难度,我们就是要向难度挑战。。。

没难度,哪有进步,同意的支持一下。。。


你去看看腾讯吧,或者google也行,也存在这个问题,并且大多数知名网站都有这个问题

如果你觉得你的技术比他们还要牛的话,那就继续研究

不过我认为这个问题是存在的,并且其他的方案都没有session,比如上面有人说用cookie,viewstate都没有session方便与安全

没必要专牛角尖


呵呵,我也想,我们老大就是要专牛角尖,做下属不容易呀,这年头,做啥都不容易呀。。。