1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 利用cookie和session实现七天免登陆

利用cookie和session实现七天免登陆

时间:2023-07-18 13:10:51

相关推荐

利用cookie和session实现七天免登陆

利用cookie和session实现七天免登陆

经常看到登录网站的时候回出现 记住我 等这一类的选项,可以让你下一次登录的时候无需登录。下面我们用代码实现一下。

简单的前端页面 login.jsp:我用的是jsp

<h3>登录访问资源</h3><h3>${msg}</h3><hr><form action="source" method="post">用户名:<input type="text" name="username"><br>密码:<input type="text" name="password"><br><input type="checkbox" name="remember" value="1">是否七天免登陆<br><input type="submit" value="提交"></form>

后台代码:这里我用的是原生的servlet

@WebServlet("/source")public class LoginSourceServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = req.getParameter("username");String password = req.getParameter("password");String remember = req.getParameter("remember");if(!username.equals("yang" || !password.equals("123"))){req.setAttribute("msg","用户名或者密码错误");req.getRequestDispatcher("/login.jsp").forward(req,resp);return;}if(remember.equals("1")){Cookie cookie = new Cookie("JSEESIONID", req.getSession().getId());cookie.setMaxAge(60*60*24*7);req.getSession().setMaxInactiveInterval(60*60*24*7);resp.addCookie(cookie);}else {/*设置session的生命周期*/req.getSession().setMaxInactiveInterval(1800);/*设置cookie的jsessionid的值和生命周期*/Cookie c = new Cookie("JSESSIONID", req.getSession().getId());c.setMaxAge(-1);/*将cookie放入到响应对象中*/resp.addCookie(c);}req.getSession().setAttribute("username",username);req.getRequestDispatcher("/success.jsp").forward(req,resp);}}

登录成功后的页面 success.jsp:

<body>${username},欢迎您!</body>

要点总结:

其实最重要的是下面这一段代码:

Cookie cookie= new Cookie("JSEESIONID", req.getSession().getId());cookie.setMaxAge(60*60*24*7);req.getSession().setMaxInactiveInterval(60*60*24*7);resp.addCookie(cookie);

思路:我们先创建一个cookie对象,然后将其JSEESIONID赋值为req.getSession().getId(),JSEESIONID就相当于一个身份牌,后我们将这个身份牌设置七天的有效期,之后再给session设置七天的有效期,这样客户端的cookie中的jsessionid和服务端的session有效期都是7天,之后每次请求cookie都会带着jsessionid来和session中的jsessionid对比,就可以简单的实现七天免登陆了。

这里注意一下,如果下一次登陆又点了七天免登陆,那么就会重新计算天数

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。