在我的前一篇文章《妙用Cache检验用户是否重复登陆》,经过实践和思考,发现忽略了一个很重要的地方:只是在登陆时,设置了一次登录值到Cache中。如果Cache失效的时间设置久了,用户一旦退出,在较短的时间间隔内重新登陆时,会发现无法登陆。但是如果失效时间设置短了,恶意登陆者又会在较短的时间内重新登陆,而且成功通过检验。显然这种判断方法是不完善的。

       我们需要怎么来改进这个时间的难题呢?设置一个较短的失效时间间隔,然后每隔一定时间,检查一下Cache,把用户登陆信息重新写入Cache。那么只要用户不退出网站系统,或者不关闭浏览器,这种判断方法将会一直有效!那么,在WEB上,在ASP.NET下,什么东西能方便的实现计时器的效果呢?目前而言,最好的选择无疑是 ATLAS 中的Timer控件!能够设置计时器的启动,间隔时间,以及间隔时间后做的事件。

 程序改进以后,分享如下,请参看程序注释:
前台页面

后台程序

利用Cache、Timer(ATLAS)控制用户重复登陆的可行性方法using System;
利用Cache、Timer(ATLAS)控制用户重复登陆的可行性方法
using System.Data;
利用Cache、Timer(ATLAS)控制用户重复登陆的可行性方法
using System.Configuration;
利用Cache、Timer(ATLAS)控制用户重复登陆的可行性方法
using System.Web;
利用Cache、Timer(ATLAS)控制用户重复登陆的可行性方法
using System.Web.Security;
利用Cache、Timer(ATLAS)控制用户重复登陆的可行性方法
using System.Web.UI;
利用Cache、Timer(ATLAS)控制用户重复登陆的可行性方法
using System.Web.UI.WebControls;
利用Cache、Timer(ATLAS)控制用户重复登陆的可行性方法
using System.Web.UI.WebControls.WebParts;
利用Cache、Timer(ATLAS)控制用户重复登陆的可行性方法
using System.Web.UI.HtmlControls;
利用Cache、Timer(ATLAS)控制用户重复登陆的可行性方法
利用Cache、Timer(ATLAS)控制用户重复登陆的可行性方法
public partial class _Default : System.Web.UI.Page 
}

示例代码:/Files/heekui/WebLogin.rar

后记:
1  这个方法对于判断用户重复登陆是可行的,但是同时伴随着另一个问题点。设置了Timer,定时工作的话,只要不是正常退出,或者关闭浏览器的话,Session便永远不会失效了。这样作会有什么不好的效果吗?
2  这个方法对每一个用户而言都会定时向服务器发出请求,无疑会增加服务器端的负担。若同时在线人数很多的情况下,这种请求是否会对服务器产生很大的影响。
    所以,只能说以上的这个方法只是一种可行的方法,但是否最优,没有测试。不知各位还有什么更好的办法没有。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-29
  • 2022-12-23
  • 2021-07-30
  • 2021-09-21
猜你喜欢
  • 2021-08-30
  • 2022-12-23
  • 2021-08-18
  • 2022-12-23
  • 2021-06-03
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案