JAVA之登录页面记住密码之COOKIE实现

每次在进入登录页面的时候都要进行用户名和密码的输入,用户的体验不好。

使用cookie来实现记住密码的功能。我实现的是逻辑比较简单的记住密码操作;并没有涉及安全性比较高的业务;比如说与支付相关的密码,例淘宝,基本上每次都需要自己重新输入密码。

首先梳理一下记住密码的操作流程:

  1. 页面点击“记住密码”选项卡;
  2. 传递一个“rember”的flag标志到后台;
  3. 后台处理用户信息和flag标志位;验证成功添加一个Cookie;
  4. 后台设置Cookie有效时间和路径,然后返回一个response;
  5. 前台检测请求中时候含有用户信息的cookie,然后传递到用户名和密码input中的value中

前台代码:

<%  //java
    String name="";  
    String psw="";  
    Cookie[] cookies=request.getCookies();  
    if(cookies!=null&&cookies.length>0){   
        //遍历Cookie  
        for(int i=0;i  
//dom
记住密码
//jquery scripts $('#remberBtn').on(oTools.clickEvent, function(){ var $_this = $(this); var selected = $_this.data('rember'); if (selected != true) { $_this.data('rember', true); $_this.find('img').attr('src', 'images/checkbox-s-icon.png'); } else { $_this.data('rember', false); $_this.find('img').attr('src', 'images/checkbox-icon.png'); } });

后台代码:

	private void addCookie(String username, String password,HttpServletResponse response, HttpServletRequest request) throws UnsupportedEncodingException {
		if(!username.equals("") && !password.equals("")){  
	        //创建Cookie  
	        Cookie nameCookie=new Cookie("name",URLEncoder.encode(username,"utf-8"));  
	        Cookie pswCookie=new Cookie("psw",password);  
	          
	        //设置Cookie的父路径  
	        nameCookie.setPath(request.getContextPath()+"/");  
	        pswCookie.setPath(request.getContextPath()+"/");  
	          
	        //获取是否保存Cookie  
	        String rememberMe=request.getParameter("rember");  
	        if(rememberMe==null || rememberMe.equals(false)){//不保存Cookie  
	            nameCookie.setMaxAge(0);  
	            pswCookie.setMaxAge(0);  
	        }else{//保存Cookie的时间长度,单位为秒  
	            nameCookie.setMaxAge(7*24*60*60);  
	            pswCookie.setMaxAge(7*24*60*60);  
	        }  
	        //加入Cookie到响应头  
	        response.addCookie(nameCookie);  
	        response.addCookie(pswCookie);  
	    }  			
		}

开发完成之后测试结果;

打开浏览器开发者工具;查询cookie中时候存在你设置的值;

ps:这种事最简单的保存密码的实现方法;并不涉及太深层次的逻辑;因为这种是与客户端直接接触;安全性没有保障;
推荐另一种安全机制比较高的---传递的cookie的value值存储在数据库中;value值对应的密码存储在数据库中;每一次访问登录页面会检测cookie,然后查询数据库,去到用户记住的密码;


你可能感兴趣的:(Spring)