请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于cookie session机制的实现

老师您好,在课程中用cookie session来实现的登录,是将服务端session过期时间配置成2周左右过期。我想到有两种情况,不知道一个大致的实现原理是怎样的,希望和您探讨一下思路

1. 有一些网站,基本登录之后,只要不退出,很久都不需要重新登录,我个人理解为session永不过期,那在这种情况下,服务器数据库如何维护过多的session,因为如果不登出也不过期,session的数量只会越来越多?

2. 还有一些网站,是一段时间内无操作就需要重新登录,那在这种情况下,session过期时间是否就不是一个固定的值,而是在每个请求时更新session的过期时间?每个请求都更新过期时间是否会对数据库造成比较大的压力?

正在回答

1回答

不错, 你的问题是经过思考的: 1. 一般网站为了解决多点同时登陆的问题一般重新登录以后会将之前的session删除掉,所以理论上一个用户只有一个session活跃,所以如果时长过大,session在库中会比较多,。但是不会无限不会超过用户数, 怎么会很多呢?而且对于你来说 用户越多 session会更加重要,无论花多大的代价都是值得的。 2. 一般情况下不会动态过期时间,一般是固定的,但是是如何做到经常操作就不会退出呢,一般session会有刷新机制。这个时候前端可以判断用户的操作情况,如果操作频繁等到快到过期时间之前重新刷新一下过期时间就行了


0 回复 有任何疑惑可以回复我~
  • 提问者 烈焰卡卡 #1
    第二个问题我理解了,第一个问题,假如网站需要允许用户在多个地方同时登录,那么每个地方的session应该是不同的,并且都应该能够通过服务器的认证。那假如同时需要过期时间很长,是不是只能管理好大量的session,并且防止恶意调用登录接口造成大量无用session?
    回复 有任何疑惑可以回复我~ 2020-06-28 18:25:02
  • bobby 回复 提问者 烈焰卡卡 #2
    session量也不大啊,即使运行多地登录那么也要考虑一个问题就是爬虫的问题, 这个就是属于反爬的问题了,不过一般情况下session机制都不会运行多地登录的,但是如果使用jwt的机制那么就不行了,因为jwt没法删除之前的,所以一般的jwt策略是过期时间短,允许前端自己去定时刷新jwt
    回复 有任何疑惑可以回复我~ 2020-07-01 12:22:59
  • 提问者 烈焰卡卡 回复 bobby #3
    明白了,谢谢老师!
    回复 有任何疑惑可以回复我~ 2020-07-03 10:58:35
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信