在web开发中有时需要将用户的一些信息在客户端加密后进行提交,然后在web后端进行验证,可以提高页面传输过程中的安全性。本例实现一个简单的加密登录demo,例子仅仅为了演示使用,实际使用时可以根据实际要求进行修改。
1、主要实现点
1、form中加入一个隐藏的input用于提交加密后的密文;
2、在表单的submit方法中将输入的明文密码加密,并设置到隐藏的input中。加密使用md5.js进行实现,该文件可自行百度;
3、在表单的submit方法中使用ajaxSubmit提交form;
本例用于演示,提交时会同时提交明文和密文密码,实际使用时可以将明文输入框改为不提交或者放到form表单之外即可。
2、代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用户登录</title>
<link rel="stylesheet" type="text/css" href="/CarAppStore/css/login/style.css" />
<link rel="stylesheet" type="text/css" href="/CarAppStore/css/login/body.css"/>
<script type="text/javascript" src="/CarAppStore/js/jquery/jquery-1.9.0.min.js"></script>
<script type="text/javascript" src="/CarAppStore/js/jquery/jquery-form.js"></script>
<script type="text/javascript" src="/CarAppStore/js/jquery/jquery-validate.js"></script>
<script type="text/javascript" src="/CarAppStore/js/noty/packaged/jquery.noty.packaged.min.js"></script>
<script type="text/javascript" src="/resource/rcs/safe/md5.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var url="manage/updater.shtml";
var baseRef = window.location.href;
var aa = baseRef.indexOf("=");
if(0 < aa) {
url=baseRef.substring(aa+1);
}
//ajax submit.
$("#formLogin").submit(function() {
var tmp = hex_md5($("#password").val());
$("#txt_passwd").val(tmp);
$(this).ajaxSubmit({
success: function(data) { // data 保存提交后返回的数据,一般为 json 数据
var obj = eval("("+data+")");
if(obj.result=="ok") {
window.location.assign(url);
}
else {
$.noty.consumeAlert({layout: 'top', type: 'error', dismissQueue: true,timeout:2000});
alert("登录失败,请重试!");
}
}
});
return false;
});
});
</script>
</head>
<body>
<div class="container">
<section id="content">
<form id="formLogin" name="formLogin" action="userLogin.shtml" method="post" target="fmResult">
<h1>用户登录</h1>
<div>
<input type="text" placeholder="用户名" required="" id="username" name="account"/>
</div>
<div>
<input type="password" placeholder="密码" required="" id="password" name="password"/>
</div>
<div class="">
<span class="help-block u-errormessage" id="js-server-helpinfo"> </span>
</div>
<div>
<input type="submit" value="登录" class="btn btn-primary" id="js-btn-login" style="float: left;"/>
<input type="reset" value="重置" class="btn btn-primary" id="js-btn-login" style="float: right;"/>
</div>
<div>
<input type="hidden" id="txt_passwd" name="passwd"/>
</div>
</form>
</section><!-- content -->
<div>
<iframe width="1px" height="1px" name="fmResult" style="display: none;"></iframe>
</div>
</div>
<!-- container -->
</body>
</html>3、运行效果
后端返回认证的json字符串,如果客户端认证通过将重定向到一个新页面,该页面通过地址栏参数传入,没有时使用预定的默认值。失败时弹出一个noty的提示框(如上图)。
版权声明:本文为yxtouch原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。