单点登录两种实现方案

[size=large]说是两种其内在实质还是一个思路。
一种是使用js,另一种是使用iframe。

说一下总体思路:
从主站开始吧,在登录验证完成后,不是马上跳转。这里要向页面中输出一段内容。可以是js,也可以是iframe。
1、js的话形如[/size]

<script type='text/javascript' src='http://njm2.com/Cross.aspx?参数'></script>
<script type='text/javascript' src='http://njm3.com/Cross.aspx?参数'></script>
<script type='text/javascript'>toIndex('" + returnUrl + "');</script>

[size=medium]前两个是去其它域名下去登录。第三行是跳转。

2、iframe形如[/size]
<iframe style='display:none;' id='njm2' src=''></iframe>
<iframe style='display:none;' id='njm3' src=''></iframe>
<input type='hidden' id='sso_ids' value='njm2,njm3'/>
<input type='hidden' id='njm2_src' value='http://njm2.com/Cross_Iframe.aspx?参数'/>
<input type='hidden' id='njm3_src' value='http://njm2.com/Cross_Iframe.aspx?参数'/>

ClientScript.RegisterStartupScript(this.GetType(), "toUrl", "navUrl.toUrl('" + returnUrl + "');", true);

[size=medium]前两个是去其它域名下去登录;第三个是两个iframe的id,第四、五个是对应前两个iframe的src地址。第六个是跳转。
页面上还要再放一段js代码[/size]
<script type="text/javascript>
var navUrl = {
calcVal: 0,
toUrl: function(url) {
var hidids = document.getElementById("sso_ids").value;
var frameArr = hidids.split(',');
var frameLength = frameArr.length;
navUrl.calcVal = frameLength;

for (var i = 0; i < frameLength; i++) {
var iframe = document.getElementById(frameArr[i]);
iframe.src = document.getElementById(frameArr[i]+"_src").value;
if (iframe.attachEvent) {
iframe.attachEvent("onload", function() {
navUrl.execToUrl(url);
});
} else {
iframe.onload = function() {
navUrl.execToUrl(url);
};
}
}
},
execToUrl: function(url) {
navUrl.calcVal -= 1;
if (navUrl.calcVal <= 0) {
location.href = url;
}
}
}
</script>


3、区别通过图说明
[img]http://dl2.iteye.com/upload/attachment/0090/2378/ecd83395-7263-38bf-ad73-3fd8bc2787f9.png[/img]

4、Demo附件[解压密码:我的iteye域名]
sso_单点登录.rar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值