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