我现在要做的是类似于第三方的服务。
我的项目为其它域名下的项目提供一个可以嵌入的
外部JS文件,这些项目虽然在不同的域名下面,但是写入的cookie数据项是一样的。
而且要到登录验证的服务器也是一样的。
所以现在的要求就是:
假设我的域名为bbb.com
要插入JS文件的域名为aaa.com
怎样实现aaa.com域名下面的系统退出的话,bbb.com域名下面的系统也退出?
aaa.com域名下面的系统换了一个用户的话,bbb.com域名下面的系统也换成相应的用户?1.要求打开bbb.com域名下面的系统的时候是独立的窗口,而不是aaa.com域名下面的一个iframe。
2.这些变化要求是实时的。就是说aaa.com域名下面的系统发生了变化,要求bbb.com域名下面的系统
能够很快感知到,并且做出相应的变化。希望大家能给点建议,给点思路或者提示也行。
谢谢!!!

解决方案 »

  1.   

    你能否详细的描述下你的场景,
    aaa登录,怎么进入bbb,就是,这一套流程怎么走,然后我帮你看看怎么解决这个问题,这个js怎么用,请详细描述
      

  2.   

    aaa正常登录会写cookie,把用户名和密码之类的写进cookie,
    而我又知道aaa中的cookie项名称。
    怎么进入bbb?目前来说是采用在aaa页面中使用JS函数调用
    通过Window.open来打开bbb中的系统,从而进入bbb。
    为了使用和维护简便,目前我对aaa唯一的操作权限就是
    可以通过插入一段JS脚本到aaa中的页面中。
    不允许进行其它操作。
    也可以说没有权限,我只提供一个bbb下面的外部JS文件即可。
      

  3.   

    还实时,还感知?是不是想得过多了呢?!因为只要保存同样一个ID号,然后你的服务器上去修改这个ID号对应的什么“系统退出、用户登录”状态数据就够了,除了这个ID号以外任何数据都用不着写到cookie中。
      

  4.   

    我基本明白了,你只提供了一个bbb下面的js文件,然后aaa调用这个js的方法,然后这个js的方法必须可以使得bbb得到登录信息,你刚才也说到了,Window.open来打开bbb中的系统,从而进入bbb,不过刚一登录aaa就要求打开这么一个页面很突兀,并且弹出窗口可能被拦截掉,那这样,你将bbb这个js里面加入这么一段逻辑,aaa登录成功后,调用bbb的js方法,方法传递用户名和密码参数,js就负责在aaa引用了这个js的页面中插入一个iframe,这个iframe可以是不可见的,然后你通过src属性,向bbb传值,这样的话,bbb的cookie也就可以被写入了,因为你是不同的域,aaa和bbb cookie不可以共享的,所以,只能让aaa在登录或者退出后,调用一下bbb的js方法,通过src这样的属性来实现,
      

  5.   

    aaa登录成功后,调用bbb的js方法?这是我所控制不了的吧?
    我不知道什么时候aaa会登录成功?
    因为我只是要在打开bbb的时候,需要得到aaa是否登录成功的信息,
    还有可能就是bbb虽然得到了aaa是否登录成功的信息但是用户不单击某个链接的话,
    bbb中的窗口是不会打开的。
    就是说bbb中的窗口打开与否取决于用户的操作,并不是在aaa打开的时候就打开的。
    bbb中的窗口有可能永远不打开,但是只要打开就要自动登录。
    通过src属性,向bbb传值?不太明白,能在说的详细一点吗?谢谢!!!
    让aaa在登录或者退出后,调用一下bbb的js方法??这个我控制不了,
    我只能让bbb的js方法定时检测cookie数据项,有则认为登录成功,没有就认为退出。在这里有个小问题:
    我只能检测cookie数据项有没有,但是不知道用户更换没有?
    因为就算是用户更换了,cookie数据项还是有值的。
      

  6.   

    楼主这个方式很容易被欺骗的,就是说,bbb要达到正常的登录状态,也需要验证一下用户名和密码,按照楼主这个逻辑,bbb的js在aaa中被载入,一个方法去检测aaa的cookie,然后根据cookie的信息,向bbb的页面传值,我说的src是这样的,首先,执行了bbb的js方法,检测cookie里面有没有值存在,然后动态向aaa的页面里面插入如下脚本,这个意思也就是让bbb的页面接收到参数了。
    <iframe src="bbbpage.aspx?username=xxx&password=yyy"></iframe>这样bbbpage看到用户名和密码做了验证以后,就可以在bbbpage.aspx里面写好cookie,那么进入bbb就不需要登录了,不过,这要要求cookie里面保存了密码,不然的话,bbbpage.aspx没办法做验证,如果默认读取到有cookie记录了用户名就算登录,那么很容易被欺骗,至于用户更换,也很容易啊,检测一下bbb的cookie里面的用户名是否更换就好了,还有退出也是容易的,你检测到了cookie里面没有值了,就把bbb的cookie变成空
      

  7.   

    那是不是要不断的刷新这个iframe啊?重新给他参数???谢谢热心回答!!!
      

  8.   

    不是了,就是a在关键的时候传递参数给iframe,比如登录,退出,让b写好cookie,就行了,但是,为了让a和b的cookie时间上同步,a里面必须包含一个iframe,每次访问a的页面,b的一个页面也被访问了,这样才不至于b的cookie早于a过期