可以利用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; }