用jsonp方式做的cookie跨域登录如何让跨域的网站知道此用户登录了?


一个多用户blog,有许多子blog,每个子站都绑定自己的独立域名,登录状态如何在大站和各子站之间互通?

我想的办法是用jsonp,建立一个独立域名的单独的用户系统,网站用户注册或登录跳转到此系统,完成操作后在跳转回原站。
跨域登录用jsonp,独立用户系统有一个页面输出用户登录的信息,用户名啥的。
其他网站jsonp调用这个页面的输出信息,把在用户系统登录的信息显示到他们自己网站上,看起来就像登录了一样。

但这么做有个问题,就是如果子站设定了某些页面只有登录用户才能打开,那么服务器是需要判断cookie的,而这个子站实际上并没有cookie,登录信息只是jsonp调用其他系统的。

这时候应该怎么做呢????

或者还有比jsonp更好的跨域登录方法,可以说说,要简单点的,不要太复杂。

=======================
刚我想可以用js动态给跨域子站创建个cookie,但
1:刷新问题,js必须在刷新过一次页面以后才会执行,但此时服务器链接已经断开了,服务器要想获取js创建的cookie还得再刷新一次页面,两次了都。
2:如果js创建cookie,由于原料服务端创建cookie时有加密,js创建cookie如果一样加密,那加密方法就暴露了大家都能看到,如果不加密,那服务端无法正确解析。因为服务端要解密cookie.

总之挺烦人的

jsonp php

天体战士桑雷德 12 years, 2 months ago

同意你的思路。补充下:
js创建cookie:这个加密不能用js做呀,js获取到明文的过程中信息就不安全了,建议通过jsonp方式访问登录站点,如果已登录,把加密后的cookie字符串返回,js不需要知道cookie内容是什么,只要把它写cookie中就行了。

刷新问题:如果你的各个子站域名是完全不同的,比如tmall.com vs taobao.com这样的,这个二次请求问题是不可避免的,可以用一个跳转页来解决:
子站的某页面a需要登录后访问,跳转到这个子站下的b页面,在b页面通过jsonp获取登录状态,未登录则跳转登录页面,如果登录过,写入cookie后跳转回子站原页面a,a接收到请求后拿着cookie中的加密字符串通过安全的方式访问登录站点请求解析。

坑爹的趁早滚 answered 12 years, 11 months ago

Your Answer