动态会话超时



可以动态更改会话超时吗?超时时间需要根据用户的角色设置。我试图使用configure::write来动态更改超时,但它不起作用。似乎新的会话超时生效,你必须重置会话,但重置会话将丢失登录信息。

我认为在您检查角色成员资格后使用以下内容将得到您想要的。

HttpContext.Current.Session.Timeout = 1200;

我认为你是对的,当你说你不能改变会话超时后,它已经创建,也许你可以看看重新生成一个新的超时。

但也许一个更简单的解决方案是使用javascript,你可以设置一个超时值,当超时时发送一个ajax请求,将用户注销。如果用户禁用javascript,这显然不起作用,但这取决于你希望它有多安全。

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

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

最新更新