防止用户用同一账号多人同时登陆的方法 补充一

因为做了网络远程教育,这个问题可以算是一个核心技术和难点啦,上次写了一个利用global.asa,session和数据库防止同时登陆的方法,但是在几百个人使用的系统中还可以应付,而且session很占系统资源的,搞不好还会然系统崩溃。

 

看了《The world is flat》世界是平的,对开源思想有了新的认识。记得80年代《第三次浪潮》让那个年代的大学生兴奋了一把,但大多数人都认为是天方夜谭。所有的事情在这三十年里一一应验。虽然现在不可能有打破爱因斯坦相对论的时间机器出现。《back to the future》(回到未来)只不过是电影,《寻秦记》和《神话》只不过是电视剧。但根据规律,科学地推断是可以预见外来的。

 

开源思想就让我站在巨人的肩上(stand on the shoulder of giant)。最近看了art2008 v4关于会员管理的的源码,深受启发。

在会员登录后它把信息存在cookies里,有加密后的key,用户名,加密后的密码,还有就是最关键的一个加密过的随机字符串,而这个字符串同时存放在了数据库的登录信息里。此后的登录验证都要从cookies里面读出一次,在用数据库里用户数据对比用户名和密码的同时,还要用数据库里的登录信息对比这段随机字符串,如果相同则代表的是同一次登录,如果不同说明在他登录后还有别人登录过,那么他就不能再继续操作了,提示在别处登录过,请重新输入用户名和密码。

我在此基础上增加了对比最后登录IP地址的功能,主要防止登录成功后,把cookies传给别人。在登录记录中记录下最后登录的IP,每次在校验登录信息时对比最后登录的IP是否相同。

以上这个方法,小巧而功能强大,上万的用户系统也能够实现这个功能,如果你有别的更好的,希望分享出来。

你可能感兴趣的:(doNET与ASP)