如果用户登录成功,判断是否勾选了7天内免登陆,如果勾选了,将用户名和密码放到cookie中,下次使用该浏览器访问的时候,直接从浏览器中读取用户名和密码,自动为用户登录。
⒈在16-p2p-admin的com.sxbdqn.p2p.admin.cookie包下创建MyCookieUtil类,并创建addCookie方法,用于向浏览器放cookie
public class MyCookieUtil {
/**
* 向浏览器中放cookie
*/
public static void addCookie(HttpServletRequest request,HttpServletResponse response,
String cookieName,String cookieValue){
Cookie cookie = new Cookie(cookieName,cookieValue);
//7天
cookie.setMaxAge(7*24*60*60);
//将cookie放到项目的上下文根下
cookie.setPath(request.getContextPath());
//通过response向浏览器响应cookie
response.addCookie(cookie);
}
}
⒉在16-p2p-admin的IndexController的login方法中,加判断
else{
//登陆成功
//判断是否勾选了7天内免登陆
if(freeLogin){
//将用户名和密码放到cookie中
MyCookieUtil.addCookie(request,response,Constants.COOKIE_USERNAME,userName);
MyCookieUtil.addCookie(request,response,Constants.COOKIE_PASSWORD,password);
}
//将用户信息放到session中
request.getSession().setAttribute(Constants.SESSION_USER,userInfo);
returnObject.setErrorCode(Constants.ONE);
returnObject.setErrorMessage("账号或者密码不匹配");
return returnObject;
}
⒊在Constants类中添加cookie中用于存放用户名和密码的名字常量
//cookie中存放用户名的常量名
public static final String COOKIE_USERNAME = "sn";
//cookie中存放密码的常量名
public static final String COOKIE_PASSWORD = "wd"
⒋浏览器访问登录页面,并勾选7天内免登陆,登录成功后,测试cookie是否设置成功
⒌在16-p2p-admin的MyCookieUtil类中创建getCookie方法,用于获取浏览器中携带的cookie
/**
* 获取浏览器中携带cookie
*/
public static String getCookie(HttpServletRequest request, String cookieName) {
String cookieValue = null;
Cookie[] cookies = request.getCookies();
if(cookies != null){
for (Cookie cookie : cookies) {
//如果遍历出的cookie名字就是你要获取的cookie名
if(cookie.getName().equals(cookieName)){
cookieValue = cookie.getValue();
break;
}
}
}
return cookieValue;
}
⒍修改16-p2p-admin的IndexController的index方法,实现自动登录
@RequestMapping("/")
public String index(HttpServletRequest request,Model model){
//读取浏览cookie中携带的用户名和密码,然后自动登录
String userName = MyCookieUtil.getCookie(request,Constants.COOKIE_USERNAME);
String password = MyCookieUtil.getCookie(request,Constants.COOKIE_PASSWORD);
//如果cookie中携带了用户名和密码并且不为null
if(StringUtils.isNotEmpty(userName)&&StringUtils.isNotEmpty(password)){
//通过model将用户名和密码传递到index.jsp页面,并传递一个免登陆标记
model.addAttribute("userName",userName);
model.addAttribute("password",password);
//是否免登陆标记,1为免登陆
model.addAttribute("loginFlag",1);
}
return "index";
}
⒎在index.jsp页面中,给用户名和密码加value属性
⒏页面加载完成之后,判断是否为免登陆
//判断是否为免登陆
var loginFlag = "${loginFlag}";
if (loginFlag == "1"){
login();
}
⒐修改index.jsp中的login函数,如果是自动登录,密码从后台获取的就是加密的,所以不需要加密
var loginFlag = "${loginFlag}";
if (loginFlag !="1"){
//MD5加密
password = $.md5(password);
}
⒑浏览器访问测试