`
kakarottoz
  • 浏览: 8271 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

实现多个系统的模拟登录

阅读更多

       公司内部要用几个内部系统,由于几个系统经常登录比较繁琐。所以需要统一登录认证的功能。回去一查 现在比较通用的方法为单点登录(比如CAS),但这个需要一个公共的认证服务,每个子系统还要有一个client端服务。由于其他系统是别的公司 不同语言开发的  ,不能让人家写client端程序吧!最后只得在本系统中实现直接登录其他系统。

        既然不能用单点登录而且跨服务器、跨开发语言,只能用html和js来模拟登录动作了。大致想法为:本系统中放一个公共登录页,下拉框对应相应系统。登录时根据下拉系统跳转到远程html。

下拉框代码:

 

<select name="Searchtype" id="Searchtype">
  		<option value="系统1远程html地址">系统1</option>
  		<option value="系统2远程html地址">系统2</option>
  		<option value="系统3远程html地址">系统3</option>
  </select>

 onSubmit执行js为:

 

 

function oz(){
	  var type=document.getElementById("Searchtype").options[document.getElementById("Searchtype").selectedIndex].value;
	  debugger;
	  var name = base64encode(encodeURI($("#username").val()));
	  var pass = base64encode(encodeURI($("#password").val()));

	 // alert($.cookie("namets"));
	  type=type+"?namets="+name+"&&passts="+pass;
	  document.form1.action=type;
}

       这里采用url+用户名&密码的方式传送到远程html,登录的form采用post方式提交 否则会把其他元素值都带上了。为了安全起见,用户名密码经过了encodeuri和base64加密。

        前面说的远程html放在相应系统的web服务器中,实质是一个html文件,这个html包括一个导航条(其他系统)和一个大iframe,iframe中包含了要访问的远程系统。iframe放于远程html中解决了“跨域”问题,初次访问该html进入登录页,把接收到的用户名密码放到对应框中并用js模拟点击登录按钮进入系统,这样用户就可以在本html中操作系统了。

        为了便于用户点击导航切换系统,需要把用户名密码存于页面便于登录。这里使用了cookie实现这一功能。

        下面为远程html代码:

 

	<script type="text/javascript">
	var iframe;
	function load() {
		debugger;
		iframe = document.getElementById("iframe");
		iframe.onload = iframe.onreadystatechange = iframeload;
		iframe.src = "模拟登录系统url";
		iframe.width = $("body").width() - 100;
		iframe.height = $(window).height() + 100;
	}
	function iframeload() {
		if (!iframe.readyState || iframe.readyState == "complete") {
			//alert("Local iframe is now loaded.");
			debugger;

			var url = location.href; //获取url中"?"符后的字串
			var theRequest = new Object();
			if (url.indexOf("?") != -1) {
				var str = url.substr(1);
				strs = str.split("&");
				for ( var i = 0; i < strs.length; i++) {
					theRequest[strs[i].split("=")[0]] = (strs[i].split("=")[1]);
				}
			}
			var name = theRequest["namets"];
			var pass = theRequest["passts"];
                        
                        $.cookie("namets", "name",{expires:2}); 
                                          $.cookie("passts", "pass",{expires:2}); 
 			var obj = document.getElementById("iframe").contentWindow;
			obj.document.getElementById("模拟登录系统用户名框id").value = name;
			obj.document.getElementById("模拟登录系统密码框id").value = pass;
			var ifmObj = obj.document.getElementById("模拟登录系统submit的id");
			ifmObj.click();
		}
	}
	function dd() {
		var ts = document.getElementById("sys1");
		//ts.href = "http://192.168.1.25:8080/fan/zz.html";
		//?name=system&pass=123456
		alert($.cookie("namets")+""+$.cookie("passts"));
		ts.href="系统1的远程html文件";
	}

	
</script>

 

 

 

<body onload="load()">
		<div>
			<a id="sys1" onclick="dd()" target="_blank"><font color="red">系统1</font> </a>
			<a id="sys2"><font color="red">系统2</font> </a>
			<a id="sys3"><font color="red">系统3</font> </a>
		</div>
		<iframe id="iframe"></iframe>
</body>

 

使用时只要把该html放到要访问系统的服务器下即可

此程序的不足之处,还请高手们指教。

 

分享到:
评论

相关推荐

    操作系统实习 java实现模拟文件管理系统

    为了实现多用户的文件系统,引入了用户管理机制。每个用户拥有唯一的ID,当用户登录系统后,其ID将被记录,系统据此判断用户是否具有访问特定文件或目录的权限。具体实现包括: - **用户注册与登录**:用户需先注册...

    简单实现多线程同步示例(模拟购票系统)

    本示例“简单实现多线程同步示例(模拟购票系统)”旨在通过一个具体的实例,帮助开发者理解如何在Java中创建并管理多线程以及如何实现线程同步,确保数据的一致性和正确性。 首先,我们要明确多线程的基本概念。在...

    模拟操作系统的实现 (C语言)

    这个项目将涵盖数据结构、算法、多线程编程等多个计算机科学基础领域,对于学习和研究操作系统有着极高的价值。在实践中,我们需要注意代码的清晰性、可扩展性和错误处理,确保模拟操作系统的稳定性和可靠性。

    操作系统的模拟实现 C++编写

    本资源用c++模拟操作系统的实现 主要内容:1.进程控制 2.分页式存储管理 3.设备管理4.文件管理 5.进程调度 有问题 联系 lx15636825085@163.com

    操作系统的模拟实现

    同时,我们还需要设计一个合理的模型-视图-控制器(MVC)架构,以便将界面操作与系统模拟逻辑分离,提高代码的可维护性。 在内存管理部分,我们可以使用数据结构如链表或数组来模拟物理和虚拟内存。通过分配和回收...

    模拟磁盘文件系统实现

    设计一个简单的文件系统,用文件模拟磁盘,用数组模拟缓冲区,要求: (1) 支持多级目录结构,支持文件的绝对读路径; (2) 文件的逻辑结构采用流式结构,物理结构采用链接结构中的显式链接方式; (3) 采用文件...

    vc++实现的模拟操作系统

    在本项目中,“vc++实现的模拟操作系统”是一个利用Visual C++编程语言构建的简易操作系统模拟器。这个项目旨在提供一个平台,让用户能够理解和学习操作系统的基本概念和工作原理,而无需深入复杂的实际操作系统代码...

    模拟FAT文件系统的设计与实现

    1. **多用户与多级目录结构**:系统允许多个用户(usr1, user2等)登录,并且每个用户有自己的文件和目录结构。目录结构为树形,第一级目录对应用户账号,第二级目录对应用户账号下的文件。 2. **FAT文件系统**:...

    操作系统实验--模拟实现单处理机下的进程调度程序

    通过这个实验,你可以学习如何用编程语言模拟这些调度算法,理解它们的优缺点,以及它们如何影响系统的整体性能。同时,分析和比较不同调度策略下的系统指标(如周转时间、响应时间、吞吐量等)也是实验的重要部分。...

    Java实现模拟银行储蓄系统

    在本项目中,我们关注的是使用Java编程语言...综上所述,这个Java实现的银行储蓄系统涵盖了Java编程、面向对象设计、数据库连接、数据处理等多个核心IT知识领域,对于提升开发者在实际项目中的综合技能有着重要意义。

    模拟文件系统 操作系统实习作业

    在这个操作系统实习作业中,我们将探讨一个使用VB2005编写的模拟文件系统,该系统不仅实现了基本的文件操作,还涵盖了用户管理和权限设置等操作系统功能。 首先,VB2005(Visual Basic 2005)是微软开发的一款面向...

    JAVA语言实现的ATM机模拟系统

    总的来说,实现一个JAVA语言的ATM机模拟系统需要掌握Java的基础语法、面向对象编程、数据库操作、图形用户界面设计、异常处理、多线程以及网络安全等多个方面的知识。这不仅是对编程技能的锻炼,也是对软件工程实践...

    C++ 实现银行排队服务模拟

    本实验中,我们使用 C++ 实现了银行排队服务模拟系统,掌握了 OOP 编程思想、std::rand() 函数原理、概率编程、排队理论、链式队列数据结构及其模板实现、事件驱动的设计、蒙特卡洛方法、C++ 动态内存管理和设计理念...

    多道批处理两级调度模拟系统

    这种系统通常在大型主机和早期的计算机系统中使用,它允许多个任务同时在内存中运行,通过优化资源分配和任务调度提高系统的整体效率。 多道批处理系统的特点在于,它可以一次性加载多个作业到内存中,而不是逐一...

    银行取号模拟系统(多线程模拟实现)

    在单个进程中,可以同时执行多个独立的线程,每个线程都有自己的执行路径,可以并行完成不同的任务。在银行取号模拟系统中,多线程的应用主要包括以下几个方面: 1. 取号线程:负责生成并分配号码给用户,模拟银行...

    模拟操作系统vb实现

    6. **多线程**:虽然VB6本身不支持多线程,但VB.NET版本可以通过`System.Threading`命名空间实现多线程编程,模拟多任务并行执行。在VB.NET中,可以创建并启动`Thread`对象,每个线程代表一个进程,实现并发执行。 ...

    计算机操作系统进程调度模拟实现的算法

    这个软件时采用c++实现,在通过cygwin实现的计算机操作系统进程调度模拟实现的算法

    操作系统课程设计_模拟一个简单二级文件管理系统.doc

    模拟一个简单二级文件管理系统是一个复杂的知识点,需要考虑多个方面,包括文件系统的组织结构、文件的元数据管理、文件的存储管理、文件的安全管理等。同时,还需要考虑评价科学发展、质量效益、科学技术创新和资源...

    模拟实现单级目录、单级索引的索引文件系统

    每个文件可能由多个数据块组成,而索引块则包含指向这些数据块的指针。文件的各个索引块通过链接域顺序连接,形成一个链式结构。这使得查找文件的数据块更加高效,尤其是在文件较大的情况下。 实现这个文件系统时,...

Global site tag (gtag.js) - Google Analytics