公司内部要用几个内部系统,由于几个系统经常登录比较繁琐。所以需要统一登录认证的功能。回去一查 现在比较通用的方法为单点登录(比如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放到要访问系统的服务器下即可
此程序的不足之处,还请高手们指教。
相关推荐
为了实现多用户的文件系统,引入了用户管理机制。每个用户拥有唯一的ID,当用户登录系统后,其ID将被记录,系统据此判断用户是否具有访问特定文件或目录的权限。具体实现包括: - **用户注册与登录**:用户需先注册...
本示例“简单实现多线程同步示例(模拟购票系统)”旨在通过一个具体的实例,帮助开发者理解如何在Java中创建并管理多线程以及如何实现线程同步,确保数据的一致性和正确性。 首先,我们要明确多线程的基本概念。在...
这个项目将涵盖数据结构、算法、多线程编程等多个计算机科学基础领域,对于学习和研究操作系统有着极高的价值。在实践中,我们需要注意代码的清晰性、可扩展性和错误处理,确保模拟操作系统的稳定性和可靠性。
本资源用c++模拟操作系统的实现 主要内容:1.进程控制 2.分页式存储管理 3.设备管理4.文件管理 5.进程调度 有问题 联系 lx15636825085@163.com
同时,我们还需要设计一个合理的模型-视图-控制器(MVC)架构,以便将界面操作与系统模拟逻辑分离,提高代码的可维护性。 在内存管理部分,我们可以使用数据结构如链表或数组来模拟物理和虚拟内存。通过分配和回收...
设计一个简单的文件系统,用文件模拟磁盘,用数组模拟缓冲区,要求: (1) 支持多级目录结构,支持文件的绝对读路径; (2) 文件的逻辑结构采用流式结构,物理结构采用链接结构中的显式链接方式; (3) 采用文件...
在本项目中,“vc++实现的模拟操作系统”是一个利用Visual C++编程语言构建的简易操作系统模拟器。这个项目旨在提供一个平台,让用户能够理解和学习操作系统的基本概念和工作原理,而无需深入复杂的实际操作系统代码...
1. **多用户与多级目录结构**:系统允许多个用户(usr1, user2等)登录,并且每个用户有自己的文件和目录结构。目录结构为树形,第一级目录对应用户账号,第二级目录对应用户账号下的文件。 2. **FAT文件系统**:...
通过这个实验,你可以学习如何用编程语言模拟这些调度算法,理解它们的优缺点,以及它们如何影响系统的整体性能。同时,分析和比较不同调度策略下的系统指标(如周转时间、响应时间、吞吐量等)也是实验的重要部分。...
在本项目中,我们关注的是使用Java编程语言...综上所述,这个Java实现的银行储蓄系统涵盖了Java编程、面向对象设计、数据库连接、数据处理等多个核心IT知识领域,对于提升开发者在实际项目中的综合技能有着重要意义。
在这个操作系统实习作业中,我们将探讨一个使用VB2005编写的模拟文件系统,该系统不仅实现了基本的文件操作,还涵盖了用户管理和权限设置等操作系统功能。 首先,VB2005(Visual Basic 2005)是微软开发的一款面向...
总的来说,实现一个JAVA语言的ATM机模拟系统需要掌握Java的基础语法、面向对象编程、数据库操作、图形用户界面设计、异常处理、多线程以及网络安全等多个方面的知识。这不仅是对编程技能的锻炼,也是对软件工程实践...
本实验中,我们使用 C++ 实现了银行排队服务模拟系统,掌握了 OOP 编程思想、std::rand() 函数原理、概率编程、排队理论、链式队列数据结构及其模板实现、事件驱动的设计、蒙特卡洛方法、C++ 动态内存管理和设计理念...
这种系统通常在大型主机和早期的计算机系统中使用,它允许多个任务同时在内存中运行,通过优化资源分配和任务调度提高系统的整体效率。 多道批处理系统的特点在于,它可以一次性加载多个作业到内存中,而不是逐一...
在单个进程中,可以同时执行多个独立的线程,每个线程都有自己的执行路径,可以并行完成不同的任务。在银行取号模拟系统中,多线程的应用主要包括以下几个方面: 1. 取号线程:负责生成并分配号码给用户,模拟银行...
6. **多线程**:虽然VB6本身不支持多线程,但VB.NET版本可以通过`System.Threading`命名空间实现多线程编程,模拟多任务并行执行。在VB.NET中,可以创建并启动`Thread`对象,每个线程代表一个进程,实现并发执行。 ...
这个软件时采用c++实现,在通过cygwin实现的计算机操作系统进程调度模拟实现的算法
模拟一个简单二级文件管理系统是一个复杂的知识点,需要考虑多个方面,包括文件系统的组织结构、文件的元数据管理、文件的存储管理、文件的安全管理等。同时,还需要考虑评价科学发展、质量效益、科学技术创新和资源...
每个文件可能由多个数据块组成,而索引块则包含指向这些数据块的指针。文件的各个索引块通过链接域顺序连接,形成一个链式结构。这使得查找文件的数据块更加高效,尤其是在文件较大的情况下。 实现这个文件系统时,...