如果用戶登錄成功,判斷是否勾選了7天內免登陸,如果勾選了,將用戶名和密碼放到cookie中,下次使用該瀏覽器訪問的時候,直接從瀏覽器中讀取用戶名和密碼,自動為用戶登錄。
⒈在16-p2p-admin的com.bjpowernode.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);
}
⒑瀏覽器訪問測試