1

session(array('expire'=>86400*60));

2018-02-09 提问
1 个回答
0
和thinkphp无关,提供两种方案吧:

SESSION的机制:

  1. 客户端存储的COOKIE,是会话生命周期,在会话结束(浏览器关闭)清除该COOKIE。
  2. 服务端XXX秒没有该SESSION的新请求的话,在SESSION的GC流程中清除该SESSION。

方案1

场景:记住密码(1个月)

在登录勾选后,在客户端存储用户数据COOKIE,过期时间和设置记住的时间一直,通过可逆算法生成加密后的用户数据:{uid:1},为了安全性,可以通过再添加一个验证COOKIE用来判断数据是否被篡改,该验证COOKIE,通过不可逆算法(例如md5+salt)将原始数据加密。

后台首先检测登录状态,未登录的话,获取用户数据COOKIE和验证COOKIE,如果验证通过,生成对应的SESSION数据。

方案2

场景:针对后台需要一直保持状态的,防止单据页面提交过程中因为操作过久,导致SESSION被GC回收,需要重新登陆。

可以在前端写一个定时器,每X分钟发送一个类似心跳包的请求,防止SESSION因为太久未请求被GC回收。

当然这仅是我知道的两种方案,肯定还是有更多好的方案。

撰写答案

你可能感兴趣的

推广链接