完全跨域的2个站点,www.A.com,www.B.com
遇到下边的情况时是怎么实现单点登录的:
1,使用同一浏览器,登录了A之后,再打开站点B,A,B站之间不能跨域访问cookie的,在访问B是怎么站的时候,如何验证是否登录成功?访问B站是从地址栏输入的,没有token之类的参数,它怎么知道要验证的是哪个用户?
2,使用不同浏览器登录,跨浏览器是不可以读取cookie的对吗?那么..用Session来存放登录信息,当用户量很大的时候,如何解决资源占用问题,另外,还是哪个问题,从地址栏输入B站的时候,没有带任何参数,它是怎么知道要验证哪个用户?
3,鉴于1,2中的跨域不能访问Cookie和跨浏览器不能访问cookie,比较成熟的单点登录技术是如何解决这些问题的?
谢谢!
1.可以通过在B的页面中埋A域的一个JS,因为JS是A域的,所以可以知道用户在A的登录状态,然后在页面中再告诉B(iframe也可以做到)。还有一种方式,就是在A登录的时候,直接跳转或iframe或js一次B,这时可以带token,让B也同步登录。
2.跨浏览器不能互相读cookie。可以把Session不放在内存里(实际上很少是放内存里的,可以放数据库或其他的地方)。
3.见问题1的回答
你这已经有点超过跨域的范畴了,推荐你看看OAuth 2.0的相关知识。