可以利用session來保存用戶的信息來保持用戶的登錄;方法:
前端在第一次登錄時,通過ajax進入controller層
//用戶登錄 @RequestMapping("/login") public List<User> login(User user, HttpServletRequest request, HttpServletResponse response) {
//創建session HttpSession session = request.getSession(); List<User> list = userService.queryUserByUserName(user); for (User user1 : list) {
//將數據庫查到的用戶信息放入session中 session.setAttribute("user",user1); } return list; }
之后在需要保持登錄狀態的主頁面,在頁面加載完之后,就通過ajax發送請求
$.ajax({ url: "/keepLogin", success:function (result) { console.log(result == null || result == ""); if (result == null || result == "") { str = "<div class=\"btn-group\">" + "<button type=\"button\" class=\"btn btn-default\" id=\"login-bt01\">登錄</button>" + "</div>"; $("#loginVal").empty().append(str); $("#loginVal").on("click","#login-bt01",function () { window.location.href = "../ThemePage.html"; }) } else { path = result.path; username = result.username; id = result.id; console.log(path); $(".user_name").append(username); $("#profilePicture").attr({src: result.path}); } } });
保持登錄狀態的controller層方法
//保持用戶登錄狀態 @RequestMapping("/keepLogin") public User keepLogin(HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(); User user = (User)session.getAttribute("user"); return user; }
當用戶點擊退出按鈕時,發送ajax請求到后台,后台清除用戶信息
//清除用戶信息 @RequestMapping("/removeUser") public void removeUser(HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(); session.removeAttribute("user"); }
補充:
利用session的這種方式在瀏覽器關閉后,再打開就不能保持登錄狀態了,如果想要關閉瀏覽器后仍然可以保持登錄狀態,可以在用戶登錄的那個方法中將sessionid放入cookie中
這樣關閉瀏覽器之后再打開網站也可以保持登錄
//用戶登錄 @RequestMapping("/login") public List<User> login(User user, HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(); //新建一個cookie,將sessionid放入 Cookie cookie = new Cookie("JSESSIONID", session.getId()); //設置cookie的失效時間 cookie.setMaxAge(30*60); //添加cookie response.addCookie(cookie); List<User> list = userService.queryUserByUserName(user); for (User user1 : list) { session.setAttribute("user",user1); } return list; }