动态会话超时

时间:2011-09-21 01:48:05

标签: session cakephp timeout

我可以动态更改会话超时吗?必须根据用户角色设置超时。我尝试使用configure :: write动态更改超时但它不起作用。似乎对于新会话超时采取效果,您必须重置会话,但重置会话将丢失登录信息。

3 个答案:

答案 0 :(得分:0)

我认为你说你在创建后无法更改会话超时是正确的,也许你可以看一下使用新的超时重新生成会话超时。

但也许一个更简单的解决方案是使用javascript,你可以设置一个超时值,当它用完时发送一个记录用户的ajax请求。 如果用户禁用javascript,这显然不起作用,但这取决于你想要的安全性。

答案 1 :(得分:0)

您是否考虑在会话中使用变量存储上次页面加载的日期/时间而不是更改会话超时,以便在下一次页面加载时检查它?

您可以在AppController中的beforeFilter()方法中添加一些代码,以计算上一次页面加载(存储在会话中)与现在之间经过的时间,如果这大于指定用户角色的会话长度,破坏会话。如果没有,请将当前日期/时间存储在会话中,以便下次可以使用。

答案 2 :(得分:0)

我认为在检查角色成员身份后使用类似下面的内容会得到你想要的东西。

HttpContext.Current.Session.Timeout = 1200;