这点挺难的,在同个域下,倒是可以利用session,cookie,数据库来判断的。。

解决方案 »

  1.   

    假设A网站上的login.aspx负责登录,子网站可以采用url参数的方式传递,那么登录功能可以访问:
      http://A/login.aspx?site=http://B/abc/表示登录之后进入B网站/abc目录。在这个登录页面上,显示登录界面。当用户输入之后,如果输入正确,B网站也有权限,login.aspx页面可以将客户端重定向到:
      http://B/abc/?passport=232837823B网站通过网站间的服务去A网站凭这个passport取客户身份信息。login.aspx实际可以作为iframe嵌入别的网站的网页里。
      

  2.   

    如果这个passport很像是sessionID,或者干脆使用sessionID也可以。或者也可以与cookie结合使用,保存更长久时间。但是也可以是与用户的机器无关,根据用户的信息产生的md5编码等(这样客户端可以移动)。当网站B要到导航网站C上去的时候,不要忘记传递passport就行了。注意login.aspx总在A网站上而不需要考虑同域还是跨域。
      

  3.   

    asp.net2.0的那个实现,什么“同域”、每一个网站都要同步维护整个认证数据库,反而把问题复杂性搞得成倍增加,不是真正的单点登录。