ssm保持登录状态


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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM