用户登录问题之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