如何使网站记住用户即保持登录Session Cookie

使用session和cookie,每个用户对应一个session_id,还要有一个失效日期。session_id存在cookie中。

session存在一致性问题,就是在负载均衡情况下,如果把session存在某一个应用服务器下,如果下次请求的是集群中的另一个服务器,那么就需要重新登录。

所以比较好的解决方案就是单独设置一个session服务器可以是mysql服务器,更好的是redis服务器。

session id 必须是随机的,如果是简单数字,那么有可能被伪造,冒充登录。其实无论多么复杂,可能还是有伪造的可能性

还有一种方法是使用token。

浏览器第一次访问服务器的时候会在服务端生成session,有一个sessionid和它对应

sessionid的生成方式:随机数+时间戳。

session可以存放在内存中,也可以持久化到数据库或者文件中。

服务端将sessionID通过cookie的形式发给客户端。session的销毁只能通过invalidate和超时。关闭浏览器并不会关闭session,因为session存放在服务端。

Java使用HttpServletRequest的getSession(true)方法创建的。在创建Session的同时,服务器会为该Session生成唯一的sessionID。而这个sessionID在随后的请求中会被用来获得已经创建的Session。在Session被创建之后,就可以调用Session的相关方法往Session中增加内容了。而这些内容只会被保存在服务器中,发到客户端的只有SessionID.当客户端再次发送请求的时候,会将这个session id带上。服务器收到请求之后就会依据SessionID找到对应的Session,从而再次使用它。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值