(crm筆記2-6)使用者登入問題之cookie記住密碼
阿新 • • 發佈:2018-12-31
使用者登入問題之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