理解登陸的業務邏輯(年少時候的見解,沒時間完善,暫時備註)

作者的個人分享網:分享時刻【www.itison.cn】

登陸的業務邏輯一定要理解清楚

登陸功能要做的不僅僅是驗證用戶名密碼是否匹配,登陸功能要做的東西遠遠不止這個。

前端表單驗證(包括驗證碼驗證、用戶名密碼非空驗證、是否記住密碼等)。

後臺做登陸驗證(用戶名和密碼是否匹配數據庫用戶表)、跳轉登陸界面,登陸成功要跳轉首頁,登陸失敗要返回登陸界面並且提示登陸失敗,記住密碼則要有相應的Cookie編程,如果有需求要驗證該用戶是否已經登陸過了。

登陸狀態,可以在數據庫添加一個字段表示,也可以放在session中,登陸成功要修改狀態,退出登陸也要修改狀態,並且返回登陸界面。

註銷登陸代碼示例:

/**
 * 註銷登陸
 * @param request
 * @return String
 */
@RequestMapping("outLogin")
public String outLogin(HttpServletRequest request) {
	request.getSession().removeAttribute("username");
	return "login";
}

跳轉登陸界面(做了攔截器後前端a鏈接跳轉只能通過後臺跳轉),以及顯示記住密碼:

/**
 * 跳轉登陸頁面
 *TODO
 *LIU
 * @return String
 *下午8:31:40
 */
@RequestMapping("loginView")
public String loginView(Model model, HttpServletRequest request) {
	//拿到客戶端的cookie
	Cookie[] cookies = request.getCookies();
	//循環找到相應的cookie
	for (Cookie cookie : cookies) {
		if(cookie.getName() != null && cookie.getName().equals("usernameAndpassword")) {
			String val = cookie.getValue();
			// 根據存進去的方式解析出來
			String [] user = val.split(":");
			UserLoginBean userLogin = new UserLoginBean(user[0],user[1]);
			System.out.println("Cookie裏面的用戶:" + userLogin);
			model.addAttribute("userLogin",userLogin);
		};
	}
	System.out.println("跳轉login.jsp頁面...");
	return "login";
}

登陸驗證:

/**
 * 驗證用戶登陸
 *TODO
 *LIU
 * @return String
 *下午11:07:54
 */
@RequestMapping("verifyLogin")
public String verifyLogin(UserLoginBean userLogin, Model model, HttpServletRequest request, HttpServletResponse response) {
	System.out.println("驗證用戶名和密碼:" + userLogin.toString());
	if(null != request.getSession().getAttribute("username") && request.getSession().getAttribute("username").equals(userLogin.getUsername())) {
		model.addAttribute("error","該用戶已經登錄!!");
		return "login";
	}
	
	boolean result = false;
	if(userLogin != null && !userLogin.getUsername().equals("") && !userLogin.getPassword().equals("")) {
		//登陸驗證
		result = loginService.getUserLoginCount(userLogin);	
	}
	model.addAttribute("userLogin",userLogin);
	if(result) {
		//存在這個用戶  才記住密碼
		if(request.getParameter("chkRememberMe") != null) {
			//new一個cookie,用於存用戶名和密碼
			Cookie c = new Cookie("usernameAndpassword",userLogin.getUsername() +":"+ userLogin.getPassword());
			//最大的聲明週期   以秒爲單位
			c.setMaxAge(60*60*24*7);
			//推送到客戶端
			response.addCookie(c);
		}else {
			//new一個cookie
			Cookie c = new Cookie("usernameAndpassword",userLogin.getUsername() +":"+ userLogin.getPassword());
			//最大的聲明週期   以秒爲單位
			c.setMaxAge(0);
			//推送到客戶端
			response.addCookie(c);
		}
		request.getSession().setAttribute("username", userLogin.getUsername());
		return "index";
	}else {
		model.addAttribute("error","用戶名或密碼填寫不正確!!");
		return "login";
	}
}
	
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章