(crm笔记2-6)用户登录问题之cookie记住密码

来源:互联网 发布:linux删除组命令 编辑:程序博客网 时间:2024/05/14 02:29

用户登录问题之cookie记住密码

1、需求



      这个功能其实随处可见,任何一个网站都需要在用户登录后为用户记住密码,哪怕用户不用记住,你也要提供这个功能,而且需求很简单,只要在用户登录成功后,根据“记住我”这个单选框是否勾选,勾选则实现记住密码,而且在用户登录的一定时间内,用户可以随意登录网站。

2、思路分析:



      前面已经实现对用户信息验证,现在需要对用户登录后的信息进行保存,也就是在登录成功后,所以信息的保存需要在Action中,而且需要在验证通过后才能进行这个方法对信息进行保存。


      1)登录成功的用户在一定时间内,再次登录不需密码,用户信息需要保存在session会话中

      2)利用cookie对信息进行保存,实现保存方法,放置在信息验证成功后调用

      3)在前端页面获取保存的cookie,对cookie内的信息进行读取,并显示在对应的输入框中。

3、代码实现



      1)保存用户到session中

//在信息验证成功后,添加该方法,保存对象SessionUtils.setSysUserToSession(request,sysUser);



      方法实现

/** * 保存当前登录用户信息到session中 * @param request * @param sysUser */public static void setSysUserToSession(HttpServletRequest request,SysUser sysUser) {    HttpSession session=request.getSession();    if(sysUser==null){        return;    }    session.setAttribute("sysUserKey", sysUser);}



      2)将信息添加到cookie中

        ...        //登录成功        SessionUtils.setSysUserToSession(request,sysUser);        //处理cookie        addCookie(name,password_ ,response,request);        return "main";



      添加cookie方法实现addCookie:

private void addCookie(String name, String password_,            HttpServletResponse response, HttpServletRequest request) {        if(StringUtils.isNotBlank(name)&&StringUtils.isNotBlank(password)){            //创建cookie            Cookie nameCookie=new Cookie("name",java.net.URLEncoder.encode(name));            Cookie passwordCookie=new Cookie("password",password);            //设置保存            String rememberMe=request.getParameter("rememberMe");            if(rememberMe==null){//不保存cookie                nameCookie.setMaxAge(0);                passwordCookie.setMaxAge(0);            }else{//保存,设置保存时间                nameCookie.setMaxAge(7*24*3600);                passwordCookie.setMaxAge(7*24*3600);            }            //加入cookie到响应头            response.addCookie(nameCookie);            response.addCookie(passwordCookie);        }



      3)在jsp页面对cookie中的信息显示在对应的输入框中

<%    String name="";    String password="";    String checked="";    Cookie[] cookies=request.getCookies();    if(cookies.length>0&&cookies!=null){        for(int i=0;i<cookies.length;i++){            Cookie cookie=cookies[i];            System.out.println(cookie.getName()+":    "+ cookie.getValue());            if("name".equals(cookie.getName())){                name=URLDecoder.decode(cookie.getName(),"utf-8");//对于中文汉字进行解码                checked="checked";            }            if("password".equals(cookie.getName())){                password=cookie.getValue();            }        }    }%>


      4)在对应的输入框中显示value

value="<%= name %>"

      在“记住我”单选框中加入是否选中:

<%=checked %>

这里写图片描述

      这样就成功了!




版权声明:本文为博主原创文章,转载请注明出处:http://blog.csdn.net/wearge/article/details/78165823

原创粉丝点击