j2ee|设计|项目
摘 要 J2EE是当前建立和开发各种Web应用的主流平台,本文针对在系统中用户登录存在的问题,提出了改进方案,详细描述了系统工作原理,并针对具体业务,给出实现的具体内容,为在J2EE环境下实现统一认证、集中式的系统管理与权限管理体系提供了可行方案。
关键词 J2EE;Web应用;登录;
引言
为改变传统的登录方式,方便用户充分利用网络资源,我们改进了用户登录的方式,建立了用户帐户认证中心系统,负责管理对所有的用户建立网络用户登录标识的各种资料,管理登录和注销过程。用户只需一次登录,就可以访问其拥有的权限和资源,极大地方便了用户的使用,提高了系统资源的利用效益。
基于J2EE用户登录的设计
系统采用多层(N-tier)开发模式,基本构架如图1所示。系统基本构架总体上分为四层:系统平台层、服务层和应用层,在服务层和系统平台层之间构架系统的数据层,使得系统数据独立、安全。
图1 系统基本框架图
系统平台采用J2EE标准,基于J2EE标准开发的应用可以跨平台地移植,并提供了企业计算中需要的各种服务;J2EE中多数标准定义了接口,例如JNDI, JDBC等,因此可以和许多厂商的产品配合,容易得到广泛的支持;J2EE树立了一个广泛而通用的标准,大大简化了应用开发和部署过程。操作系统可以使用基于MS Windows 、或者UNIX、LUNIX等操作系统。
在系统平台层之上是系统的数据层,数据库可以使用XML。XML具有良好的可扩展性,语言简单有效,可自行定义标记;内容与形式的分离,主要刻画数据内容,不考虑显示效果;有严格的语法要求,便于分析统一和与数据库信息转换;便于传输,为纯文本形式,可通过Http协议直接传输,可跨越防火墙等等。系统还可以采用Oracle、MS SQL Server、DB2、MySql等其他数据库。
在系统平台层和数据层的支持下,系统通过服务层来对整个平台提供服务。提供应用的支持和标准化的应用接口。用户认证中心就建立在服务层,给每一个用户一个建立用户标识,并负责对每一个登录客户进行系统认证。
在服务层之上系统构架了应用层。应用层包括单位各种综合应用,如指挥自动化网、政治工作宣传网、财务网等。由于系统提供标准化接口,因此,单位内部现在已有的应用系统和以后开发的应用只要使用标准化接口,就可以方便、无缝地构架在系统平台应用中。
整个这个多层次结构组成了的系统的整体,通过多层次的结构应用,系统的扩展性和灵活性都得以保证,并且具有了更广阔的适用性。
基于J2EE用户登录实现
1、系统实现原理
用户在访问系统组件中的任何一个页面,系统都会转到登录界面,在用户登录后,系统会自动转会到客户上次请求的页面。并且用户此后可以在系统中无缝切换,不需要再次进行登录,实现了一站式登录。系统用户登录实现原理如图2所示。
图2 系统用户登录实现图
系统实现步骤如下:
⑴ 用户访问应用系统。
⑵ 应用系统如果检查到用户没有在自己的服务器登录,则将用户请求重定向到用户认证中心上。
⑶ 用户认证中心验证用户的实时状态,如果用户没有登录,则自动转向认证中心的用户登录界面。如果已经登录,将用户标识及用户令牌,重定向回应用系统。
⑷ 用户认证中心验证用户身份后,生成用户令牌,重定向回应用系统。
⑸ 应用系统接收统一格式的用户令牌,取得用户在本系统上的登录账号,将用户在本系统上状态置为登录,返回用户请求访问的页面。
⑹ 如果用户在访问应用系统之前已经在应用系统登录服务器上登录过,第二步到第五步对用户来说就是透明的,用户感觉只是向应用系统发出了访问请求,然后得到了正确的页面反馈。
从上面的流程,我们可以知道,不管用户访问哪个应用系统,用户只需要一次登录,就保证用户在整个系统中的状态都是在线的,不再需要进行第二次登录。
2、系统实现关键代码
系统定义了三个Session变量:
UserID:标识用户身份;
Pass:标识用户即时状态;
Url:保存了上次请求的页面,以保证在用户登录后能转到用户请求的页面。
初始化时:
Protected void init()
{
Session.Add("UserID", 0);
Session.Add("Pass", false);
Session.Add("Url", "");
}
对于验证过程,首先将传递过来的参数保存到Session中。如果用户没有登录,则转到Login.jsp页面进行登录。如果用户已经登录了。则将用户标识和用户令牌重定向到应用系统访问页面。
private void Validate()
{
bool Pass = (bool)Session["Pass"];
if ((Request. GetString ["Url"] != null) && (Request.GetString["Url "] != ""))
{
Session["Url "] = Request.GetString["Url "];
}
if (Pass)
{
string UserID = Session["UserID"].ToString();
string Url = Session["Url "].ToString();
Response.Redirect(Url+"/AppPage.jsp?UserID=" + UserID + "&Pass=True);
}
else
{
Response.Redirect("Login.jsp")
}
}
结束语
我们已经完成了本文所阐述采用改进的用户登录系统在J2EE体系下的实现,并成功应用到多个的Web应用系统中,实践证明,该登录系统具有以下几个特点:
⑴ 具备无缝连接功能。能够尽可能地利用现有系统的身份认证模块以及现有的用户设置和权限设置,尽量保护现有的投资,减少重新的用户设置和权限设置的费用,同时避免对现有系统进行大规模的修改。
⑵ 具有良好的扩展性。不仅能支持现有的应用系统及其现有的用户系统,当开发和部署新的应用组件时,这个系统服务可以作为它的身份认证模块的形式工作,也就是说,新的组件应用可以通过集成该服务的形式来实现等价的功能,不必再设计用户系统,。
⑶ 具备灵活的使用模式。此系统管理为用户提供多种登录手段,包括传统的口令登录或者配发用户身份卡,用户可以通过多种方式自由地使用该系统服务。为了提高系统安全性,又节约费用,我们采用USB存储设备,将个人的信息存储其中,进行登录认证,取得了良好的效果。