跨域登录已经不是一个神秘的事情啦,诸多网站都有类似的功能比如淘宝(taobao.com)和淘宝商城(tmall.com),两个不同的域名在taobao.com登录后,进入tmall.com会发现“欢迎***”
跨域用到的技术还是jsonp,由于是自己思考和设计所以难免会有些未知问题,还望大师帮忙拍砖指导
贴上代码
$(function(){ $.ajax({ url:"http://login.nnpic.cn/index.php?m=Api&a=check_login&refer=?", dataType:'json', jsonpCallback:'loginAll', success: function(res){ $('#lp').html(res.username+'登录成功 + <a href="javascript:void(0)" id="logoff">退出</a>'); var skey=res.skey; var name=res.username; //将skey登录 $.getJSON("http://www.2emd.com/index.php?m=Index&a=connect&skey="+skey+'&username='+name,function(req){ //alert(req); }) }, error:function(){ $('#lp').html('您尚未登录 <a href="http://login.nnpic.cn/index.php?m=Index&a=login&jumpurl=aaa">登录</a>'); } }) //$.getScript('http://login.nnpic.cn/index.php?m=Api&a=show_login',function(){ //alert(userCookie._un_); //}) $('#logoff').live('click',function(){ $.getJSON('http://www.2emd.com/index.php?m=Index&a=logoff'); $.getJSON('http://login.nnpic.cn/index.php?m=Api&a=logoff&refer=?'); }) })
思路是这样一个login.nnpic.cn域处理唯一帐号登录,其余二级域直接登录这个就不用说了,login.nnpic.cn则需要提供一个登录返回的接口 就是上面的”,右它返回一串登录成功的信息(比如说用户名、登录成功与否……)真实环境中这些需要加密
然后2emd.com则需要一个接收请求回来的数据的接口也就是说用这个返回的数据来处理本站(2emd.com)的登录“http://www.2emd.com/index.php?m=Index&a=connect&skey=”+skey+’&username=’+name”
后面如果是在子站注销用户的话那么直接就请求多个注销地址:
$.getJSON('http://www.2emd.com/index.php?m=Index&a=logoff'); $.getJSON('http://login.nnpic.cn/index.php?m=Api&a=logoff&refer=?');
效果展示:
1、两站都未登录
2、登录login.nnpic.cn后刷新2emd.com
3、在2emd.com中退出,刷新login.nnpic.cn
好啦~ 大概效果是差不多了,但是安全问题都没有怎么入心去考虑,所以在实际生产中还需要多多积累相关知识,提升技术!!!
如果需要下载代码可以提供……
PS:这个一个低级伪SSO登录系统,后续有时间我会亲自实战SSO。