多个站点如何共享Session?

原创 2007年10月08日 17:35:00
 
CSDN首页 新闻 论坛 小组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 第二书店 程序员

(ASP)多个站点如何共享Session?

楼主fzhenmei(宁静致远)2005-12-12 09:46:20 在 Web 开发 / ASP 提问

如题,IIS6下建有多个站点,www.abc.com,news.abc.com,ent.abc.com,现在要实现在这三个站点任意一个站点登陆,同时具有三个站点的用户权限。  
  如果有知道的,请不吝赐教。 问题点数:100、回复次数:47Top

1 楼ybfqlyq(Rossy|http://blog.ybfq.com)回复于 2005-12-12 10:10:35 得分 0

隨便登錄一個網站設個SESSION就行吧Top

2 楼fzhenmei(宁静致远)回复于 2005-12-12 10:17:39 得分 0

呵呵,要是这么简单,也不用提问了:)Top

3 楼tigerwen01(小虎)回复于 2005-12-12 10:29:36 得分 0

通过一个表来可以方便的实现这种功能。Top

4 楼fzhenmei(宁静致远)回复于 2005-12-12 10:34:03 得分 0

to:tigerwen01,能详细说说吗?我也想到使用数据库,但是发现并不好做。Top

5 楼fzhenmei(宁静致远)回复于 2005-12-12 10:42:36 得分 0

每个Session要对应一个使用者,或者说一台计算机,如何对应起来啊?ASP的Session是通过Cookies来实现了,客户机传递SessionId给服务器,于是服务器把Session和客户机对应起来。多个站点SessionId有没有可能重复?关键是怎么得到这个SessionId?  
  在用户从登陆站点跳到另外一个站点的时候要把SessionId传递过去,程序根据SessionId查找数据库...通过Url传?Top

6 楼KimSoft(革命的小酒天天醉-http://blog.csdn.net/kimsoft/)回复于 2005-12-12 10:42:44 得分 0

建议你看看wrox的一本书好象叫asp.net   高级编程,里面有一章是讲asp.net   session处理的,肯定对你这个有帮助。。。Top

7 楼ahhisoft(无所事事)回复于 2005-12-12 10:46:10 得分 10

登陆任一网站。  
  给用户Session以后。顺便将Session信息写到表里。  
  转到其它网站以后首先检查表里的信息。  
  若有就赋给Session  
   
  不过这样做的话无法捕捉用户离线啊...Top

8 楼fzhenmei(宁静致远)回复于 2005-12-12 10:53:14 得分 0

to:ahhisoft(无所事事)    
  usera登陆了站A,userb也登陆了站a,  
  这个时候数据库里面就有两条记录。  
  关键是如何确定usera的Session记录是哪一条呢?  
  如果写在url里,那惨了...好多页面,几乎每一个页面都要用到Session...Top

9 楼fzhenmei(宁静致远)回复于 2005-12-12 10:54:49 得分 0

to:KimSoft(革命的小酒天天醉)    
  谢谢你建议,今天去书店逛逛。  
  但是现在的网站群是ASP的,要改成Asp.net的不知道要多久...不知道Asp.net的可不可以用到Asp上...Top

10 楼KimSoft(革命的小酒天天醉-http://blog.csdn.net/kimsoft/)回复于 2005-12-12 10:57:01 得分 20

不是,我说是那个asp.net里面说的session控制思想对你这个有帮助。  
  例如多机发布时,一个用户从A站点下了一个订单,可能又访问到B站点了,这时从A站点下的订单肯定要带过去。那本书里有很好的思路和办法,你看看,或许会有启发。而不是叫你转用.netTop

11 楼fzhenmei(宁静致远)回复于 2005-12-12 11:16:17 得分 0

to:KimSoft(革命的小酒天天醉)  
  呵呵,其实我想把网站转成.net...  
  嗯,希望这本书能有帮助,现在这个Session问题已经迫在眉睫...Top

12 楼ytzz(冲星中!多给分!谢谢!)回复于 2005-12-12 11:30:33 得分 10

ahhisoft(无所事事)   说的办法似乎可行...只是不知道怎么捕捉用户离线事件..  
   
    session里可以加入登陆信息啊,这样不就可以把用户区别开了吗?有什么问题?Top

13 楼fzhenmei(宁静致远)回复于 2005-12-12 11:59:41 得分 0

ytzz(炮灰曰:"不给分的我会记住你名字的!"):  
   
  session里可以加入登陆信息啊,这样不就可以把用户区别开了吗?有什么问题?  
   
  转到另外一个站的时候,就不知道表里Session是哪位的了!查询表,总的有个条件吧?因为表中(存放Session的表)不会只有一个用户的数据的Top

14 楼czq9966(宁录)(毛主席领导咱闹革命……)回复于 2005-12-12 13:08:41 得分 10

如果三个站点在同一台服务器上就可以用一个xml文件,或一个文本文件来实现,  
   
  用户登录修改那个文件,0为没有登录,1为已登录,在用户离开登录的时候,再进行一次修改那个文件,  
   
  可以试试这样可以了,我也没有做过,只是觉得这样应该可以实现Top

15 楼fzhenmei(宁静致远)回复于 2005-12-12 13:15:45 得分 0

to:   czq9966(大家知道龟兔赛跑谁会赢?)    
  站点是在同一台服务器上,但是这个应该不是问题之所在:  
  用Xml、文本文件和数据库应该没有什么分别吧?如果可以,原理应该是一样的。  
   
  我想,问题的关键是登陆之后转到另外一个站点时,怎么找到登陆用户的Session信息。Top

16 楼fzhenmei(宁静致远)回复于 2005-12-12 14:17:32 得分 0

自己up一下Top

17 楼zwrtv(蝙蝠)回复于 2005-12-12 14:36:41 得分 0

路过学习下Top

18 楼wojiaogyp(三人行)回复于 2005-12-12 15:13:28 得分 0

关注    
  Top

19 楼sujinlin(秋色的记忆)回复于 2005-12-12 15:35:55 得分 10

我不知道你为什么要用Session?用Cokies不可以么?  
   
   
  如果你非要用,那么给你如下建议:  
   
  增加两个字段  
   
  IP,时间  
   
  代码执行原理:页面登录后获取IP,登录时间,存入数据库。  
   
  转站后先获取IP,如相同判断登录时间与现在时间差,(差值自己定义)如果差值小于某个值默认相应的IP已经登录,根据IP确定用户,然后对Session付值。  
   
  判断Session是否存在,如果不存在转登录页面。  
   
   
  PS:在处理登录时间上要注意,因该在每次浏览页面时对时间更新。  
  Top

20 楼fzhenmei(宁静致远)回复于 2005-12-12 15:56:44 得分 0

 
  代码执行原理:页面登录后获取IP,登录时间,存入数据库。  
  根据ip,   如果同一局域网里的不同机器怎么办?他们对外的ip可能是一样的啊?  
   
  ------------  
  我不知道你为什么要用Session?用Cokies不可以么?  
  呵呵,我并不是一样要用Session,因为原来的程序使用Session保持用户的信息,如果改用Cookies,要改动较多。  
  ------------  
   
  目前正在用Cookies试验中...Top

21 楼fzhenmei(宁静致远)回复于 2005-12-12 16:01:58 得分 0

就像搜狐通行证,网易通行证那样,不知道他们是怎么实现的呢?安不安全呢?  
  登陆通行证之后不是在所有其他站点都可以畅通无阻了吗?  
  当一个网站因为业务需要分解成多个网站的时候,这个问题是不得不解决了...暂时还没有好的解决方法...研究中...  
  另外用Asp做权限管理,不用Session是不是太麻烦了?Top

22 楼love910(跳跳糖)回复于 2005-12-12 16:36:10 得分 0

他们采用的都是一个用户ID  
  判断的时候是不会变化的!  
  你也可以把那几个网站的用户ID用一个表或者数据库Top

23 楼fzhenmei(宁静致远)回复于 2005-12-12 16:43:45 得分 0

to   :   love910(跳跳糖)  
  你也可以把那几个网站的用户ID用一个表或者数据库--  
  --〉这个不是问题,关键是从一个站转到另外一个站怎么知道是哪个用户在跳转?必须告诉程序是谁转过来了才能给用户相应的权限等等。因此问题在于怎么把用户的信息很好的传递到其他站点...  
  信息保存在数据库中也要有个关键字能够把用户的信息找出来啊?  
  ...我目前的想法是使用Cookies把用户的信息传到另外的站点。  
  不知哪位有更好的办法?Top

24 楼jamila8(曾)回复于 2005-12-12 16:55:22 得分 0

最好用COOKIESTop

25 楼fangq(jack)回复于 2005-12-12 17:08:16 得分 0

如果是这样还是使用CookieTop

26 楼wojiaogyp(三人行)回复于 2005-12-12 18:22:24 得分 0

cookie怎么做?a站点的cookie可以传给b站点?怎么传?Top

27 楼wojiaogyp(三人行)回复于 2005-12-12 18:43:07 得分 0

a,b,c三个站点,在a站点登陆了,那么就隐蔽的调用b站点和c站点的登陆权限赋值页面,这时用户在三个站点就可以通用了.  
   
  你可以用很小的iframe或者宽为1的frame调用其他站点的页面.  
   
  漏洞还有,继续讨论Top

28 楼fzhenmei(宁静致远)回复于 2005-12-12 20:18:49 得分 0

to:wojiaogyp(三人行)    
   
  cookie怎么做?a站点的cookie可以传给b站点?怎么传?  
   
  -----  
  如下设置DoMain  
  Response.Cookies("1").DoMain   =   ".abc.com"  
  这样www.abc.com/news.abc.com/xxx.abc.com   都可以访问到这个Cookies,这样就传过来了,但是使用Cookies有一些问题,比如安全,浏览者的浏览器必须允许Cookies等等:)  
   
  隐蔽的调用b站点和c站点的登陆权限赋值页面?  
  你是说同时登陆三个站点吗?Top

29 楼jzywh(江大鱼)回复于 2005-12-12 20:20:25 得分 0

用cookieless的session呀!  
   
  Top

30 楼jzywh(江大鱼)回复于 2005-12-12 20:21:11 得分 0

http://www.abc.com/(dfertertertry)list.aspxTop

31 楼assdeng(山野村夫)回复于 2005-12-12 20:24:48 得分 0

见过一个神人做的系统  
  有www.aaa.com,www.bbb.com,www.ccc.com等多个网站,  
  另外还有一个www.check.com的网站  
   
  A、B、C等网站通过XMLHTTP到www.check.com提取相同用户的权限列表,通过此列表来控制A、B、C等网站。他称之为通用权限控制系统  
   
   
  Top

32 楼leelong80(小龙)回复于 2005-12-12 20:32:52 得分 30

小弟遇到过样的项目,你要知道Session也是基于服务器的cookies的。  
    那么就有方法解决了。用数据库做状态存储,要加上时间戳。  
    登陆之先查www.aaa.com,www.bbb.com,www.ccc.comTop

33 楼leelong80(小龙)回复于 2005-12-12 20:36:48 得分 0

依次查一下session之后用url将登陆状态传回当前站点,不过传的时候要加密呀,在用这个id   到数据库   数库理放的,密匙,哈哈,很好玩,现在有点记不清了,有点163   的社区,个人思法,哈哈,祝你成功。Top

34 楼leelong80(小龙)回复于 2005-12-12 20:39:33 得分 0

不过有时要是出现的服务器超时,那就要看你怎么处理了,那个时间戳,就是做这个的。要不就让他在当前站点,重新登录最好做了,^-^Top

35 楼fzhenmei(宁静致远)回复于 2005-12-12 20:57:52 得分 0

to     jzywh(江大鱼)    
  cookieless?  
  http://www.abc.com/(dfertertertry)list.aspx  
  这个Asp能做吗?  
  -------------------  
  to     leelong80(小龙)  
  你要知道Session也是基于服务器的cookies的  
    那么就有方法解决了。用数据库做状态存储,要加上时间戳。  
    登陆之先查www.aaa.com,www.bbb.com,www.ccc.com  
  --我想直接把cookies的数据传到另外一个站点的Session中,呵呵,这样就由iis去维护,省得用数据库维护还要加时间戳,并且用户关掉浏览器而不是退出数据表可能不能清空,判断复杂,Session就没有这些烦恼,用户关掉浏览器就=退出。  
  --每次用户在站点之间跳转的时候就传一次Cookies到另外一个站点的Session中,这样子不知道有没有问题?还是先试验一番吧:)Top

36 楼fzhenmei(宁静致远)回复于 2005-12-12 21:49:43 得分 0

to     assdeng(山野村夫)    
  通用权限控制系统  
  呵呵,好像越是通用的程序,做起来越复杂...  
  用XMLHTTP也好,其他的也好,要获取用户的权限列表总得传个参数到www.check.com,让check知道给用户什么权限好吧?关键就在可以同时被www.aaa.com,www.bbb.com,www.ccc.com共享的这个用户的Id(也许是其他参数)。解决了这个问题,我想就好办了。Top

37 楼setve(朱传辉)回复于 2005-12-12 23:26:36 得分 0

你试试登陆一个网站后将所有信息写到一个文件里,然后再让另外的两个网站从这个文件中提取信息登陆试试Top

38 楼iguohong(SharnSong)回复于 2005-12-13 08:26:08 得分 0

每个页面都加一个隐含属性(用来传session),到其它站时就判断session值Top

39 楼fzhenmei(宁静致远)回复于 2005-12-13 08:36:39 得分 0

谢谢上面两位的建议:)Top

40 楼zhanghongwen(流氓蚊子)回复于 2005-12-13 08:54:24 得分 0

UP一下.Top

41 楼wojiaogyp(三人行)回复于 2005-12-13 08:59:02 得分 0

那就用cookie吧,安全是问题,  
  浏览器不支持cookie,这个不用考虑吧,session是基于cookie的,若不支持cookie,就是只有一个站点,也不会顺利运行的吧.  
   
  顶多跟某些论坛一样,在登陆前提示用户打开cookie吧.Top

42 楼gameboy766(古巴)回复于 2005-12-13 09:07:23 得分 0

最简单的办法,在登录时,将帐号密码同时提交到  
  www.aaa.com,www.bbb.com,www.ccc.com三个网站。Top

43 楼fzhenmei(宁静致远)回复于 2005-12-13 09:19:03 得分 0

浏览器不支持cookie,这个不用考虑吧,session是基于cookie的,若不支持cookie,就是只有一个站点,也不会顺利运行的吧.  
  --是的,若不支持cookie,就是只有一个站点,也不会顺利运行的吧--连Cookies都不打开,浏览者也有点...  
  to:gameboy766(古巴)   www.aaa.com,www.bbb.com,www.ccc.com 你的这个三个站点应该是不能用Cookies的,Cookies好像只能支持二级域名不相同的情况...Top

44 楼gamestar1(海洋之星)回复于 2005-12-13 09:44:02 得分 0

用xmlhttp   可以实现   用户关闭浏览器时   更新表中用户在线的状态Top

45 楼fzhenmei(宁静致远)回复于 2005-12-13 09:56:20 得分 0

to:gamestar1(海洋之星)  
  xmlhttp,没有用过...哦,好像小偷程序用过:)Top

46 楼isline(缘清)回复于 2005-12-13 11:36:48 得分 10

搜狐网易用的passport登陆,每年交给微软10+美金,是买的服务。  
  你若不想花钱,现在最好的方法就是在登录成功一个域后post用户名密码到另一个域继续登录,这样一个接一个的登录,知道所有域登录完毕。Top

47 楼fzhenmei(宁静致远)回复于 2005-12-13 11:56:00 得分 0

搜狐网易用的passport登陆,每年交给微软10+美金,是买的服务。  
  --啊?!搜狐网易自己搞不定?  
  能不花钱就不花钱吧:)  
   
  --一个接一个的登录,你用什么保持用户的状态信息?Top

相关问题


 
北京百联美达美数码科技有限公司  版权所有  京 ICP 证 020026 号
Copyright © 2000-2006, CSDN.NET, All Rights Reserved

 

[ASP.NET]Session在多个站点之间共享解决方案

http://www.cnblogs.com/DebugLZQ/archive/2011/11/10/2244952.html 对于大多数的网站来说,都会使用Session来维护用户在一次会话中...
  • mituan1234567
  • mituan1234567
  • 2013-03-13 16:55:49
  • 655

IIS多个应用程序共享Session

在应用程序目录下面添加一个Global.asax文件,在文件中添加以下代码: public override void Init() { base.Init(); ...
  • apollokk
  • apollokk
  • 2015-11-24 17:10:15
  • 2021

asp.net网站不同子域名共享session信息

1session信息可序列化 [Serializable] [Serializable] public class UserSession { public st...
  • xuexiaodong2009
  • xuexiaodong2009
  • 2017-08-01 14:53:47
  • 493

多个project[项目]共享session

1. 建立一个空白解决方案blank solution,如:d:/MyProject/MyProject.sln2. 在d:/MyProject下建一个Web Application的根目录d:/My...
  • shumark
  • shumark
  • 2006-10-13 15:22:00
  • 942

两个项目中如何共享Session

微软技术中心: 感谢您使用微软产品。   这个问题可能是小组开发的时候经常考虑的问题。把项目分割为多个project,  方便了设计和调试。但是我们无法共享Session/Application变量。...
  • quou2002
  • quou2002
  • 2006-03-30 11:40:00
  • 3103

Asp.net中多项目共享Session

1. 建立一个空白解决方案blank solution,如:d:/MyProject/MyProject.sln 2. 在d:/MyProject下建一个Web Application的根目录d:/M...
  • 21aspnet
  • 21aspnet
  • 2004-10-25 00:42:00
  • 1972

跨站点共享Session解决方案,单点登录解决方案-ASP.NET 2.0版本

  • 2009年09月04日 14:29
  • 83KB
  • 下载

实现多域名下共用一个SESSION

多域名共用一个SESSION,这是很多人都梦想的事情。各位多域名站长要仔细看了.....
  • lbuskeep
  • lbuskeep
  • 2011-01-24 00:37:00
  • 13567

如何在多台web服务器上共享session?

比如:现在有三台php服务器,且实现了负载均衡,如何让这三台web服务器共享session数据? session数据默认是以文件的形式保存在web服务器的磁盘上,一般都是用户登录成功的时候,保存se...
  • lamp_yang_3533
  • lamp_yang_3533
  • 2016-07-21 16:38:23
  • 6614

四种多服务器共享session的方法

伴随网站业务规模和访问量的逐步发展,原本由单台服务器、单个域名的迷你网站架构已经无法满足发展需要。 此时我们可能会购买更多服务器,并且启用多个二级子域名以频道化的方式,根据业务功能将网站分布...
  • wjc19911118
  • wjc19911118
  • 2015-08-26 11:08:08
  • 1908
收藏助手
不良信息举报
您举报文章:多个站点如何共享Session?
举报原因:
原因补充:

(最多只允许输入30个字)