Cookie實現記住密碼的功能

1、什麼是Cookiejavascript

cookie是一種WEB服務器經過瀏覽器在訪問者的硬盤上存儲信息的手段。Cookie的目的就是爲用戶帶來方便,爲網站帶來增值。雖然有着許多誤傳,事實上Cookie並不會形成嚴重的安全威脅。Cookie永遠不會以任何方式執行,所以也不會帶來病毒或攻擊你的系統。另外,因爲瀏覽器通常只容許存放300個Cookie,每一個站點最多存放20個Cookie,每一個Cookie的大小限制爲4KB,所以Cookie不會塞滿你的硬盤。css

例如,當咱們第一次訪問網站輸入用戶名密碼時,能夠選擇讓系統記住用戶名密碼,下次就不用從新輸入了,這就是典型的Cookie的應用。html

 

2、Cookie帶來的好處:前端

cookies給網站和用戶帶來的好處很是多:java

  • 1. Cookie能使站點跟蹤特定訪問者的訪問次數、最後訪問時間等
  • 2. Cookie能告訴在線廣告商廣告被點擊的次數,從而能夠更精確的投放廣告
  • 3. Cookie有效期限未到時,Cookie能使用戶在不鍵入密碼和用戶名的狀況下進入曾經瀏覽過的一些站點
  • 4. Cookie能幫助站點統計用戶我的資料以實現各類各樣的個性化服務在JSP中,咱們也可使用Cookie,來編寫一些功能強大的應用程序。

有些瀏覽器能夠禁用Cookie,因此不能使用Cookie來完成核心的業務。jquery

 3、Cookie類的主要方法:json

int getMaxAge() 返回Cookie過時以前的最大時間,以秒計算。
int setMaxAge() 設置Cookie過時時間,以秒計算。 
String getName() 返回Cookie的名字 
String getValue() 返回Cookie的值。
void setValue(String newValue) cookie建立後設置一個新的值。

 

4、代碼實現記住密碼登陸功能:  瀏覽器

 前端頁面代碼:安全

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
 <head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>Excel數據上傳系統-登陸</title>
	<link href="${pageContext.request.contextPath}/content/css/page/login.css" rel="stylesheet" type="text/css" />
 </head>
 
 <body>
 	<div class="second_body">
    	<form data-bind="submit:loginClick">
        	<div class="logo"></div>
            <div class="title-zh">Excel數據上傳系統</div>
            <div class="title-en" style="">Excel Data Upload System</div>
            <div class="message" data-bind="html:message"></div>
            <table border="0" style="width:300px;">
            	<tr>
                	<td style="white-space:nowrap; padding-bottom: 5px;width:55px;">用戶名:</td>
                    <td colspan="2"><input type="text" id="userCode" class="login" data-bind="value:form.userCode" /></td>
                </tr>
                <tr>
                    <td class="lable" style="white-space:nowrap; letter-spacing: 0.5em; vertical-align: middle">密碼:</td>
                    <td colspan="2"><input type="password" id="password" class="login" data-bind="value:form.password" /></td>
                </tr>
                <tr>
                    <td></td>
                    <td colspan="2"><input type="checkbox" data-bind="checked:form.remember" /><span>系統記住我</span></td>
                </tr>
                <tr>
                    <td colspan="3" style="text-align:center">
                        <input type="submit" value="登陸" class="login_button" />
                        <input type="button" value="重置" class="reset_botton" data-bind="click:resetClick" />
                    </td>
                </tr>
            </table>
        </form>
    </div>
        
 	<script type="text/javascript" src="${pageContext.request.contextPath}/content/js/jquery/jquery-1.8.1.min.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath}/ligerUI/lib/jquery.cookie.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath}/content/js/core/utils.js"></script>
	<script type="text/javascript" src="${pageContext.request.contextPath}/content/js/core/common.js"></script> 
    <script type="text/javascript" src="${pageContext.request.contextPath}/content/js/core/knockout-3.4.1.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath}/js/login.js"></script>
 	<script type="text/javascript">
         $(function () {
             ko.applyBindings(new viewModel());
         });
     </script>
 </body>
 
</html>

 後臺業務處理代碼:服務器

 

//登陸查詢
	@RequestMapping(value={"/doLogin"},method ={RequestMethod.GET, RequestMethod.POST})
	@ResponseBody
	public AjaxJson doLogin(@RequestBody Map<String, String> json,HttpServletRequest request,HttpServletResponse response){
		AjaxJson resutl = new AjaxJson();
		String loginName = json.get("userCode");
	    String password = json.get("password");
	    //用戶名密碼檢查
        if ( StringUtils.isBlank(loginName) || StringUtils.isBlank(password)){
        	resutl.setSuccess(false);
			resutl.setMsg("用戶名或密碼不能爲空!");
        }else {
        	String passwordEncode = MD5Util.MD5Encode(password, "utf-8");
     		ExcelUser user = null;
     		user = loginService.findUserByLoginName(loginName);
     		if(user == null) {
     			resutl.setSuccess(false);
     			resutl.setMsg("該用戶名不存在!");
     		}else {
 				user = loginService.findUserByNameAndPwd(loginName, passwordEncode);
 	     		if(user == null) {
 	     			resutl.setSuccess(false);
 	     			resutl.setMsg("密碼輸入錯誤,請從新輸入");
 	     		}else {
 	     			if(user.getUser_status()!=null && user.getUser_status().equals("0")) {
 	     				resutl.setSuccess(false);
 	         			resutl.setMsg("該用戶名已被禁用,請聯繫管理員!");
 	     			}else {
 	     				resutl.setObj(user);
     	     			Map<String, String> map = new HashMap<>();
     					map.put("userCode", loginName);
     					map.put("userName", user.getUser_name());
     					map.put("isOauthUser", "0");
     					JSONObject jsonObject=JSONObject.fromObject(map);
     					System.out.println(jsonObject.toString());
     					request.getSession().setAttribute("LOGIN_USER",jsonObject);
     					//建立兩個Cookie對象
     		                   Cookie nameCookie = new Cookie("userCode", loginName);
     		                   Cookie pwdCookie = new Cookie("password", password);
     					if("true".equals(String.valueOf(json.get("remember")))){
     						//設置Cookie的有效期爲10天
     						nameCookie.setMaxAge(60 * 60 * 24 * 10);
     						pwdCookie.setMaxAge(60 * 60 * 24 * 10);
     						response.addCookie(nameCookie);
          		                   response.addCookie(pwdCookie);
     			        }else {
     			        	//使其cookie失效
     			        	nameCookie.setMaxAge(0);
     					pwdCookie.setMaxAge(0);
     					response.addCookie(nameCookie);
          		                response.addCookie(pwdCookie);
     			        }
 	     			}
 	     			
 	     		}
     		}
     		
        }
		return resutl;
	}

 當登陸成功以後,再退出的話,就無須要再輸入用戶名和密碼了! 

若是這篇文章對您有所幫助,請隨便打賞一下做爲鼓勵,我會再接再礪的!!!

相關文章
相關標籤/搜索