单点登录:是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分
1、获取登录页面的表单信息: 用户名,密码等,
eg: var username = document.getElementById("hidUsername").value; //此处是用来提取登录用户名
var password = document.getElementById("hidPassword").value; //此处是用来提取登录密码
2、在其他的页面 通过用cookie\session等缓存的方式获得 登录的用户名和密码;
a、如果用iframe ,动态把iframe添加到head中
eg:单口登录获取
var getNameCookie = $cookies.get("usr_name"); //cookie获取 angularjs定义$cookies 或 $.cookie("cookieName")//取出值
var getPwdCookie = "1qaz2wsx";
var scr = document.createElement("iframe"); //创建iframe
//scr.src = "http://local:8888/Report/Server?op=fs_load&cmd=sso&fr_username=" getNameCookie "&fr_password=" getPwdCookie; //将报表验证用户名密码的地址指向此iframe
scr.src = "http://local:8888/Report/Server?op=fs_load&cmd=sso&fr_username=admin&fr_password=1qaz2wsx";
if (scr.attachEvent) { //判断是否为ie浏览器
scr.attachEvent("onload", function () { //如果为ie浏览器则页面加载完成后立即执行
var f = document.getElementById("Button1"); //登录页面按钮ID
f.click();
});
} else {
scr.onload = function () { //其他浏览器则重新加载onload事件
var f = document.getElementById("Button1");
f.click();
};
}
document.getElementsByTagName("head")[0].appendChild(scr); //将iframe标签嵌入到head中
b、ajax方式
- function doSubmit() {
- var username = FR.cjkEncode(document.getElementById("username").value); //获取输入的用户名
- var password = FR.cjkEncode(document.getElementById("password").value); //获取输入的参数
- jQuery.ajax({
- url:"http://localhosReport/Server?op=fs_load&cmd=sso",//单点登录的管理平台服务器
- dataType:"jsonp",//跨域采用jsonp方式
- data:{"fr_username":username,"fr_password":password},//获取用户名密码
- jsonp:"callback",
- timeout:5000,//超时时间(单位:毫秒)
- success:function(data) {
- if (data.status === "success") {
- window.location=data.url;//认证成功跳转页面,因为ajax不支持重定向所有需要跳转的设置
- //登录成功
- } else if (data.status === "fail"){
- alert("用户名或密码错误");//登录失败(用户名或密码错误)
- }
- },
- error:function(){
- alert("超时或服务器其他错误");// 登录失败(超时或服务器其他错误)
- }
- });
- }
帮助学习文档:http://help.finereport.com/
更多专业前端知识,请上 【猿2048】www.mk2048.com