1.在登陆的时候记住密码,不知自动登陆;
2.登陆页面,填写用户名,密码,点击记住密码,下次进入登陆页面的时候,填写同样的用户名,密码自动填充(在不一次会话的情况下也就是说在不关闭浏览器的情况下);
3.这样,可以有效的防止自动登录时的不安全性
思路:
- 首先设置一个多选框,<input type="checkbox" onclick="remember()">记住密码
- 调用remember方法function remember(){1.设置一个remFlag,用来确定是否选中记住密码的多选框;2.获取checkbox的值;3.提醒用户是否要选中记住密码4.返回remFlag}
- 当调用login的方法时,获取remFlag的值,将remFlag作为参数传递给后台;
- 判断remFlag是否为1,如果为1,说明选中记住密码的按钮,之后(1.获取用户名密码,2创建cookies,3.将用户名密码作为值赋给cookies中,传递给前台)
5. 在$(function).ready({})的方法中获取cookies中的用户名密码,进行使用blur的方式进行填充
代码如下:
1.
<div style="float:right;padding-right:38%;display:true" >
<div style="float: left;margin-top:3px;margin-right:2px;">
<font>记住密码</font>
</div>
<div style="float: left;">
<input name="form-field-checkbox" id="saveid" type="checkbox"
onclick="remember();" style="padding-top:0px;" />
</div>
</div>
2.
function remember(){ var remFlag = $("input[type='checkbox']").is(':checked'); if(remFlag==true){ //如果选中设置remFlag为1 //cookie存用户名和密码,回显的是真实的用户名和密码,存在安全问题. var conFlag = confirm("记录密码功能不宜在公共场所(如网吧等)使用,以防密码泄露.您确定要使用此功能吗?"); if(conFlag){ //确认标志 $("#remFlag").val("1"); }else{ $("input[type='checkbox']").removeAttr('checked'); $("#remFlag").val(""); } }else{ //如果没选中设置remFlag为"" $("#remFlag").val(""); } }
3.
function login(){ if(check()){ var userName = $("#userName").val(); var password = $("#password").val(); var remFlag = $("#remFlag").val(); $.ajax({ type: "POST", url: 'login/userLogin.action', data: {userName:userName,password:password,remFlag:remFlag}, dataType:'json', cache: false, success: function(data){ window.location.href="index.jsp?no-cache=" + Math.random(); } }
4.
@RequestMapping("/userLogin") public void doLogin(HttpServletRequest request,HttpServletResponse response){ String msg = ""; String userName = request.getParameter("userName"); request.getSession().setAttribute("userName",userName); String password = request.getParameter("password"); //记住用户名、密码功能(注意:cookie存放密码会存在安全隐患) String remFlag = request.getParameter("remFlag"); if("1".equals(remFlag)){ //"1"表示用户勾选记住密码 /*String cookieUserName = Utils.encrypt(name); String cookiePwd = Utils.encrypt(passWord); String loginInfo = cookieUserName+","+cookiePwd;*/ String loginInfo = userName+","+password; Cookie userCookie=new Cookie("loginInfo",loginInfo); userCookie.setMaxAge(-1); //存活期为关闭浏览器cookie消失 userCookie.setPath("/"); response.addCookie(userCookie); } Subject subject = SecurityUtils.getSubject(); String pwd = new Md5Hash(password).toHex(); UsernamePasswordToken token = new UsernamePasswordToken(userName, pwd); JSONObject job = new JSONObject(); subject.login(token); }
5.
$(document).ready(function() { changeCode(); $("#codeImg").bind("click", changeCode); //记住密码功能 var str = response.getCookies("loginInfo"); str = str.substring(1,str.length-1); var username = str.split(",")[0]; var password = str.split(",")[1]; //自动填充用户名和密码 /* $("#userName").val(username); $("#password").val(password); */ $("#userName").blur(function(){ var usrName=$("#userName").val(); if(username==usrName){ $("#password").val(password); }else{ $("#password").val(''); } }); });