Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2298950
  • 博文数量: 321
  • 博客积分: 3440
  • 博客等级: 中校
  • 技术积分: 2992
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-24 09:08
个人简介

我就在这里

文章分类

全部博文(321)

文章存档

2015年(9)

2014年(84)

2013年(101)

2012年(25)

2011年(29)

2010年(21)

2009年(6)

2008年(23)

2007年(23)

分类: 项目管理

2011-10-19 13:43:54

在网上也看到一些方法,但效果不好。最近在

见到了一个不错的方法。它利用了FlexEvent.IDLE空闲事件,然后用mx_internal::idleCounter来获取空闲时间。具体代码如下:

需要import:

import mx.managers.SystemManager;import mx.events.FlexEvent;import mx.core.mx_internal;

由于要用到mx_internal命名空间里面的东西,所以需要

use namespace mx_internal;

然后在页面载入时添加

this.systemManager.addEventListener(FlexEvent.IDLE, userIdle);

将空闲事件FlexEvent.IDLE交给自定义的处理函数userIdle.

最后定义userIdle函数:

private function userIdle(e:FlexEvent):void { if(e.currentTarget.mx_internal::idleCounter == 3000){ //进行登录超时处理! }}

这里idleCounter的数值有点特别。只需要记住5分钟是3000(1分钟是600)就可以了。这样,如果要30分钟过期的话,就是18000;如果只是测试的话,可以设成30之类的:)

下面说几个常见的问题:

1.那么FlexEvent.IDLE到底有多灵敏呢?经过试验,只要鼠标发生移动flex就不认为是“闲置”的——也就是说,只用用户将电脑彻底放在那才会符合以上“用户不操作”的条件,正好符合我们的需要。

2.可不可以定时到服务器查询session呢?我觉得不可以。因为你到服务器查询HttpSession(或者BlazeDS的FlexSession)的时候也算一次交互:重新刷新Session的闲置时间。这样Session永远也不会过期。

3.可不可以在需要的时候到服务器查询Session呢?当然可以。不过我觉得这并不好。用户长时间不操作为防意外本来就需要重新登录。

http://xo-tobacoo.iteye.com/blog/653497

阅读(1820) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~