由于公司平台系统众多,部署较为分散给客户演示时一时难以找到所有系统,且不同系统登陆的用户不同,每个系统需要记录不同的用户,也给演示带来了一定的难度。为此,计划将公司所有系统部署在同一台服务器上,然后用一个简单的静态界面列出所有系统,实现类似对所有系统的列表管理,同时实现点击系统链接时,自动登录的效果。
公司系统基本使用同一框架和模式实现,这为系统点击自动登录创造了一定的便利。当前系统中所使用的登录方式都是POST提交用户名和密码,登录成功后返回界面HTML的方式来实现。
实现的基本思路为:点击链接,跳转新页面打开登录后的系统。根据这个思路,所需做的事为两步:
1、打开一个新页面,常用的为调用window.open()方法 。
2、在打开的新页面中自动传递用户参数,返回并显示登录后的界面,较容易想到的是自己构造一个form,自动提交参数代码。
整理后,实现如下:
<h4><a class="login-href" data-url="http://192.168.0.101:8001/Account/Login" data-username="test" data-password="123" "loginSystem(this)"><h4>打开新平台</h4></a></h4>
<script type="text/javascript">
function loginSystem(evt) {
//evt.preventDefault();
var url=$(evt).data('url');
var username=$(evt).data("username");
var pwd=$(evt).data("password");
var formStr = '<form style="visibility:hidden;" method="POST" action="' + url + '">' +
'<input type="hidden" name="UserName" value="' + username + '" />' +
'<input type="hidden" name="Password" value="' + pwd + '" />'+
'</form>';
var win = window.open("", "_blank");
win.document.body.innerHTML = formStr;
win.document.forms[0].submit();
}
</script>
需要特别注意调用的是当前document还是新打开的document,此方法调试时,断点会报错,但实际效果能够实现。
GOOD LUCK!!!