【如何实现自动登录 _会话管理 】 | IT修真院·坑乎
如何实现自动登录
我也踩过这个坑( 1 )
已统计您的踩坑,无需重复点击
回答(2)
会话管理
详细描述
错误截图
编辑于2024-05-13
  • [武汉|结业弟子]JAVA-谭道霄
    0

    登陆成功后将数据存到cookie里

    然后在loginpage接口判断cookie是否存在从而决定是否登陆

    编辑于2018-03-17
  • [郑州|结业弟子]JAVA-何爽
    0

    1.任务5要求我们做一个拦截器拦截url为/u的页面,此时需要注意的是当我们登录之后可以访问这个地址,退出的时候就不能再访问,这是任务要求。

    2.在这个要求中间存在一个问题:

    (1)只关闭一个页面不关闭浏览器时,sessionID并没有发生变化,此时将验证登录的token放在cookie里面即可,不需要关注sessionID。

    (2)关闭了浏览器,重新打开,此时sessionID发生变化,那么token即使不变,我们依然不能实现登录信息的保存;这时就需要我们将sessionID放在cookie中并设置一个有效时长,当我们重新打开浏览器的时候携带了本地cookie里面的sessionID和token实现了登录信息的保存。

    3.注意点击账号注销时应销毁cookie。


    4.这是我自己的部分代码,可以作为参考:

    登录时:

    @RequestMapping(value = "/loginResult")
    public String Login(User user, Model model,HttpServletResponse response,HttpSession session) throws Exception {
    String message = userService.login(user);
       if (message.equals("true")) {
    String token = jwt.generateToken(user.getUserName(),3600000);
           session.setAttribute("username",user.getUserName()+"欢迎您登陆!!");
           System.out.println(token);
           Cookie cookie = new Cookie("token",token);
           cookie.setMaxAge(5*60);
           response.addCookie(cookie);
           Cookie cookieSId = new Cookie("JSESSIONID",session.getId());
           cookieSId.setMaxAge(5*60);
           response.addCookie(cookieSId);
           System.out.println(cookie);
           return "redirect:/home";
       } else {
    model.addAttribute("message", message);
           return "login";
       }
    }
    编辑于2018-09-07