Cookie和Session实现记住我的功能

Cookie和Session都是用来保存用户的一些信息的,但是由于Cookie保存在浏览器中,所以相对不安全,后来就出现了Session,Session呢是保存在服务器端的,所以相对安全,在Cookie中有一个SESSIONID,用来唯一的对应服务器端的一个Session,Cookie的默认有效时间是-1,也就是当浏览器关闭的时候,Cookie就会失效了,当再次打开浏览器访问服务器的时候,服务器会再次创建一个Cookie保存到浏览器中,该Cookie里的SESSIONID会对应一个唯一的Session,而Session的有效期默认是30分钟(从最近一次访问Session计算30分钟后失效)

当我们想要实现记住我的功能时,我们可以自己创建一个Cookie,保存到浏览器中,然后当用户登录的时候,我们只需要找到这个Cookie,然后看看是否过期,来实现记住我的功能

        Cookie cookie = new Cookie("rememberme","abc");
        cookie.setMaxAge(60*60*24);
        resp.addCookie(cookie);

这样我们就设置了一个Cookie保存到了浏览器,每当用户访问服务器时,我们就可以通过判断该Cookie是否存在来判断用户是否保存了信息,当然了,为了安全起见,我们应该把Cookie的信息保存到数据库一份,每次判断不仅要判断是否存在该Cookie,而且要看看,是否为该Cookie(毕竟在浏览器中保存的Cookie不安全,万一该Cookie是伪造的呢),由于是记住我的功能,所以,当用户第二天登录时,昨天的Session信息已经过期了,而我们为了安全,又没有把用户信息保存到Cookie中,该怎么办呢,我们可以通过数据库中保存的那个Cookie,并添加一个userId的字段,这样,我们就可以通过这个Cookie来获取到唯一的一个用户信息了,然后我们把用户的信息通过setAttribute()再存到Session中,这样就可以实现记住我的功能,并且用户的信息也可以得到唯一的对应

发布了459 篇原创文章 · 获赞 298 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/HeZhiYing_/article/details/104745736
今日推荐