用Cookie添加登录界面的记住密码功能

在网上看到很多关于cookie记录登录密码的功能,但是大部分都是jsp界面,最近刚好有个项目用到了cookie功能,所以编写了这个介绍,补全一下。

1、第一步,首先需要在登录界面中写一个form表单(这个不用多说)

<form id="login" action="#">
    <input id="account" name="account" type="text"  value="<%=name %>" />
    <input id="password" name="password" type="password"   value="<%=psw %>"  />
    <input type="checkbox"  name="remPassword" value="1" id="remPassword"  <%=checked %>>记住密码
</form>  
<input type="button" value="登录"  onclick="login();"/>

2、应用ajax异步登录后台,验证账号和密码


function login(){

    //这一步是关键,用来判断是否勾选了记住密码框,如果未勾选,传入后台为“”,如果勾选,传入后台为1

        var checkedVal = "";
        if($("input[type='checkbox']").is(":checked")){
            checkedVal = "1";
        }         
        $.ajax({
                type : "post",
                url : 'XXX/login',
                data : {
                        account : $('#account').val(),
                        password : $('#password').val(),
                        rememberMe : checkedVal ,
                },
                dataType : 'json',
                success : function(msg){
                            if(msg.status == 200){     //返回状态为200,表示成功
                                swal('登录成功','欢迎登录','success');
                            }else{   //返回其他状态,表示失败,没有这个账号
                                 swal('登录失败','请重新登录','error');   
                            }      
                }
        });

}

3 jsp中记住密码功能的实现

<%
    String name="";
    String psw="";
    String checked="";
    Cookie[] cookies=request.getCookies();
    if(cookies!=null&&cookies.length>0){ 
    //遍历Cookie
    for(int i=0;i<cookies.length;i++){
        Cookie cookie=cookies[i];
        //此处类似与Map有name和value两个字段,name相等才赋值,并处理编码问题 
        if("name".equals(cookie.getName())){
            name=URLDecoder.decode(cookie.getValue(),"utf-8");
            //将"记住我"设置为勾选 
            checked="checked";
        }
        if("psw".equals(cookie.getName())){
             psw=cookie.getValue();
        }
    }
}
 %> 

4、后台

后台代码仅供参考,因为每个项目都不一样。其中有省去一部分代码,但是核心已经列出。

4.1  action信息

@RequestMapping(value="/login")

public void login(
    @RequestParam(value="account") String account,
    @RequestParam(value="password") String password,
    @RequestParam(value="rememberMe") String rememberMe,
    HttpServletRequest request, HttpServletResponse response)throws Exception{
   String newPsw = MD5Utils.digest(password);//用MD5进行加密处理(根据需要,决定是否加密)
   User user= userService.login(account,newPsw);//查询数据库,判断输入账号、密码是否正确
    if(user != null ){
        xxx.setStatus(200);//返回状态为200
        request.getSession().setAttribute("user", user);//向session域中添加
        //处理cookie
        addCookie(account,password,rememberMe,response,request); 
    }
}

4.2 添加cookie方法

private void addCookie(
            String name, String password,String rememberMe,
            HttpServletResponse response, HttpServletRequest request) throws Exception {
    if(StringUtils.isNotBlank(name)&&StringUtils.isNotBlank(password)){
          //设置响应格式
          response.setCharacterEncoding("UTF-8");
          Cookie nameCookie=new Cookie("name",name);
          Cookie pswCookie=new Cookie("psw",password);
          //设置Cookie的父路径
          nameCookie.setPath(request.getContextPath()+"/");
          pswCookie.setPath(request.getContextPath()+"/");
          //获取是否保存Cookie
          if(rememberMe == null || rememberMe == ""){//不保存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);
      }

}

猜你喜欢

转载自blog.csdn.net/ma919755374/article/details/80882499