普招报名系统中用户唯一登录的设计

时间:2022-05-13 08:05:51

普招报名系统中用户唯一登录的设计

摘要:该文简要介绍了普招报名系统中的用户唯一登陆的设计方法,该方法具有较强的实用性和推广性,有较强的研究价值。并对其设计过程中涉及到的Cookie的选用和Memcached的使用进行说明。

关键词:唯一登陆;Cookie;Memcached

中图分类号:TP393文献标识码:A文章编号:1009-3044(2010)19-5265-02

The Design of the Only User Login in Enrolling System

LV Li-ping1, ZANG Guo-qing2

(1.Shengda Economics Trade & Management College of ZZ University, Xingzheng 451191, China; 2.Henan University, Kaifeng 475004, China)

Abstract: This paper introduces the method of the only user login in Enrolling System,which has strong practicability and promotion and has a strong research value. It explains the selection of Cookie and the use of Memcached.

Key words: only user login; Cookie; Memcached

Internet的迅猛发展正以前所未有的广度和深度影响和改变着人类生活的各个方面。越来越多的人开始意识到Intemet所蕴含的巨大经济价值和无穷商机。Web应用也如雨后春笋,蓬勃发展。在这数字化、网络化、信息化的时代,传统的以纸介质为主的招生报名模式显然已经不能满足高效率、快节奏的现代工作和生活的需要。如何实现信息处理的自动化和招生业务“无纸化”逐步得到了教育部门的重视。高校报名直接关系到考生的一生,所以报名系统的安全性也是系统设计过程中的一个重要因素,为了防止考生用户名和密码丢失,造成不同用户利用同一账号同时登录而造成的用户报名丢失或其它恶意行为的发生,报名系统中用户的唯一登录的设计有着至关重要的地位。

1 用户唯一登录的实现策略

在用户的登录时,因为HTTP协议无法维持客户端和服务器的连接,故系统无法判断用户是否在线,因此就没有办法判断用户是否是唯一登陆的情况,但是报名系统本身要求同一用户在同一时刻只能有一个用户在线,为了保证同一时间用户登录的唯一性,我们拟采用如下的策略实现:同一用户多次登录系统时均保证用户能够登录,不对用户的登录次数做出限制,但只有最后一个登录的有效,以前登录的用户如还在线则在其访问服务器时提示:“有同名用户登录,其IP和登录时间为……”,当该用户再次发起交互时,系统跳转到登录界面强制用户在此登录,这样就保证了用户登录的唯一性。

1.1 Cookie的加密与创建

现在的用户登录信息的存储有Cookie[1-3]和Session两种方式,Session简单来说就是服务器给客户端的一个编号。当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站。当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这个用户的唯一身份。

Cookie是保存在客户端的信息,服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,它不像Session那样占用服务器资源,在对服务器访问量大的情况下使用Cookie是一个很好的选择。

Cookie可以保持登录信息到用户下次与服务器的会话,换句话说,下次访问同一网站时,用户会发现不必输入用户名和密码就已经登录了(当然,不排除用户手工删除Cookie)。而还有一些Cookie在用户退出会话的时候就被删除了,这样可以有效保护个人隐私。

Cookie是保存在客户端的信息,它不像Session那样占用服务器资源,在对服务器访问量大的情况下使用Cookie是一个很好的选择。为了安全起见,本系统采用浏览器会话结束Cookie就失效的策略。按存放位置分为内存Cookie和硬盘Cookie两种。它可以保存到浏览器会话的结束,也可以在用户计算机上无期存在。

一般来说,浏览器对Cookie中的内容大小有一定限制,尽管cookie不占用服务器资源,但是占用网络带宽,所以Cookie中的内容越少越好。由于本系统Cookie中要保存有用户的重要信息,出于安全考虑,需要对其中的数据进行加密。

为了降低对用户操作的依赖,不管用户是否正常的退出,均需要消除保存的用户Cookie。用户正常注销时要删除用户Cookie;同时首次访问登录页面加载时也要清除Cookie,避免用户未正常退出。

1.2 唯一登录具体实现

在报名系统的数据库设计过程中,在用户表中增加一个登录次数的字段,初始值设置为0,在用户每次登录一次后对其增加1,同时并对其进行数据加密写入用户Cookie中,用于以后的用户登录的统计,当用户进行登录与服务器进行交互的时候,首先对用户Cookie中的登录次数和数据库中当前的登录次数是否一致,如果Cookie中的登录次数和数据库中的登录次数相同,这说明没有同名账号的再次登录,用户登录为合法用户,可以继续访问服务器,如果不一致,说明有同名帐号登录,系统设置最后一个登录的用户为有效用户,强行把已登录的同账号用户下线,并给出有同名用户登录的提示,同时页面跳转至用户登录界面,强制要求用户再次登录方可有效,这样就保证了同一账号在同一时刻只能有一个人在线的要求,防治了不同用户用同一账号同时登录而造成的数据丢失或数据的恶意修改。

1.3 缓存的选择

在将用户Cookie中的登录次数数据与服务器中的登录次数比较的过程中,如果每次均对服务器进行访问将使数据库服务器的负载增大,如何解决数据的缓存问题也成为用户唯一登陆的一个关键问题,对数据进行缓存最简单的办法就是直接利用.NET Framework提供的缓存功能,虽然系统默认的实现比较简单,但是有一定的不足:

1)不能限制缓存的数据个数或者占用的内存大小,对于普通高招这样的应用,用户高达百万,如果不加限制的使用缓存,可能服务器的内存将会被耗尽;

2)不能对达到限制条目数的缓存进行清除;

3)SQL Dependency技术对原始SQL语句要求过严,不利于实际过程中的使用。

综合考虑最后采用Memcached[4,5,6,7]对用户登录数据进行缓存,Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。Memcached通过在内存里维护一个统一的巨大的hash表,可用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

Memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发生。

1.4 服务器集群下Memcached的部署

1)解压Memcached压缩包,需要注意该程序运行需要VC7.0运行库msvcr71.dll和msvcp71.dll。

2)使用sc命令创建服务,下面的例子创建占用128M内存(默认64M),最大2048个连接(默认1024),监听端口11211(默认)的服务。

sc create memcached binpath= "C:\memcached\memcached.exe -d runservice -m 128 -c 2048 -p 11211" start= auto displayname= "memcached"

3)客户端访问

第一步: 修改App.config或者Web.config

type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />

connectionTimeout="00:10:00" deadTimeout="00:02:00" />

第二步: 引用Enyim.Caching.DLL和log4net.DLL

第三步: 简单的访问代码:

using Enyim.Caching;

using Enyim.Caching.Memcached;

// Memcached计时

DateTime dtC = DateTime.Now;

//创建一个MemcachedClient

MemcachedClient mc = new MemcachedClient();

//在缓存中存储字符串

mc.Store(StoreMode.Set, "DREGION", tempData);

//从缓存中检索该字符串

DataSet tt = (DataSet) mc.Get("DREGION");

DateTime dtD = DateTime.Now;

2 结束语

本文介绍了普招报名系统中用户唯一登陆的设计问题,并对其中涉及到的问题进行了简述,该方法经过普招报名系统中的应用表明取得了较好的效果,具有较强的推广性和研究价值。

参考文献:

[1] 钟卫东.基于Cookie的单点登录技术[J].信息化纵横,2009(9).

[2] 沈海波,洪帆.基于 Cookie的跨域单点登录认证机制分析[J].计算机应用与软件,2006,23(12).

[3] 胡忠望,刘卫东.Cookie 应用与个人信息安全研究[J].计算机工程与应用,2007,24(3).

[4] Memcached[EB/OL]./memcached.

[5] Jellycan Code-memcached[EB/OL]./memcached.

[6] codeplex[EB/OL]./EnyimMemcached.

[7] LERNER R M.Memcached Integration In Rails[J].Linux Journal,2009(177).

上一篇:浅析游戏脚本语言Lua 下一篇:基于虚拟仪器的微机保护实验系统研究