公司内部要用几个内部系统,由于几个系统经常登录比较繁琐。所以需要统一登录认证的功能。回去一查 现在比较通用的方法为单点登录(比如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放到要访问系统的服务器下即可
此程序的不足之处,还请高手们指教。
相关推荐
本资源用c++模拟操作系统的实现 主要内容:1.进程控制 2.分页式存储管理 3.设备管理4.文件管理 5.进程调度 有问题 联系 lx15636825085@163.com
一个实现教务系统模拟登录的APP Demo.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
这个软件时采用c++实现,在通过cygwin实现的计算机操作系统进程调度模拟实现的算法
操作系统实验 模拟实现单处理机下的进程调度程序 包括先来先服务 短作业优先 时间片轮转 动态优先级 并有详细注释
设计一个简单的文件系统,用文件模拟磁盘,用数组模拟缓冲区,要求: (1) 支持多级目录结构,支持文件的绝对读路径; (2) 文件的逻辑结构采用流式结构,物理结构采用链接结构中的显式链接方式; (3) 采用文件...
简单实现多线程同步示例(模拟购票系统),内容为实现多线程同步过程,模拟购票系统进行同步购买情况;该处并未考虑线程守护问题,后期将对线程锁等安全问题进行初步研究!
每个用户最多可以保存10个文件,一次运行用户可打开多个文件。 程序采用二级文件目录。(即设置主目录(MFD)和用户文件目录(UFD))。另外,可打开文件设置指针。 为了方便实现,对文件的读写作了简化。在执行读写...
进程是并发执行的,也即系统中的多个进程轮流的占用处理器运行。 我们把若干个进程都能进行访问和修改的那些变量称为公共变量。由于进程是并发执行的,所以,如果对进程访问公共变量不加限制,那么就会产生“与时间...
实现一个简单银行叫号模拟系统。银行有三个窗口可以同时办理业务,当有用户到达银行时,首先选择则既要办理的业务,可以选择一种或多种。系统计算办理此业务所需的时间并显示给用户...模拟输出多个用户办理业务的过程。
计算机操作系统课程设计 多道批处理两级调度模拟系统 可视化界面
计算机操作系统模拟实现 进程管理模拟:实现操作系统进程管理功能,如实现进程的控制(进程创建,状态转换、进程撤销),进程并发执行。 文件管理模拟:实现文件系统的管理,如目录管理,创建文件,打开文件,读写...
模拟一个采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存储管理、设备管理、文件管理和用户接口四部分。预计程序所能达到的功能: 进程管理模拟:实现操作系统进程管理功能,如实现进程的控制...
操作系统课程设计大作业C++进程调度算法的模拟实现源码,实现了 动态优先级、先来先服务、时间片轮转 三个算法 安装教程 下载到本地,然后直接用VS打开运行即可 操作系统课程设计大作业C++进程调度算法的模拟实现...
但是利用 Java,一 个程序可以存储在一个系统上,而被下载并运行在完全不同的另一个系统上;设备可能从 不同地方下载一些程序在一个处理器上运行,或者不同的处理器运行同一个程序,并通过 网络在相互间传递数据。...
1.模拟操作系统实现。一个采用多道程序设计的单用户操作系统。包括进程管理、存储管理、设备管理、文件管理和用户接口。 2.本程序采用图形界面,输入主要为鼠标操作以及修改用户名、修改文件以及 cmd 中的键盘输入...
源文件可以进行读写保护 (2)设计原理和系统总体功能框架图 1、在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录 的文件系统。 2、文件物理结构可采用显式链接或其他方法。 3、磁盘空闲...
编写程序实现对5个进程的调度模拟,要求至少采用两种不同的调度算法分别进行模拟调度。
即:多用户、多目录的文件系统的设计------用VC或Delphi编程模拟文件系统的管理 多用户的多级目录的文件系统设计。 1. 多用户 :usr1,usr2,usr3,……,usr8 (1-8个用户) 2. 多级目录:可有多级子目录; 3. 具有...
C++ 实现银行排队服务模拟