基于J2EE的用户登录设计与登录实现
引言
为改变传统的登录方式,方便用户充分利用网络资源,我们改进了用户登录的方式,建立了用户帐户认证中心系统,负责治理对所有的用户建立网络用户登录标识的各种资料,治理登录和注销过程。用户只需一次登录,就可以访问其拥有的权限和资源,极大地方便了用户的使用,提高了系统资源的利用效益。
基于J2EE用户登录的设计
系统采用多层(N-tier)开发模式,基本构架总体上分为四层:系统平台层、服务层和应用层,在服务层和系统平台层之间构架系统的数据层,使得系统数据独立、安全。
系统平台采用J2EE标准,基于J2EE标准开发的应用可以跨平台地移植,并提供了企业计算中需要的各种服务;J2EE中多数标准定义了接口,例如JNDI, JDBC等,因此可以和许多厂商的产品配合,轻易得到广泛的支持;J2EE树立了一个广泛而通用的标准,大大简化了应用开发和部署过程。操作系统可以使用基于MS Windows 、或者UNIX、LUNIX等操作系统。
在系统平台层之上是系统的数据层,数据库可以使用XML.XML具有良好的可扩展性,语言简单有效,可自行定义标记;内容与形式的分离,主要刻画数据内容,不考虑显示效果;有严格的语法要求,便于分析统一和与数据库信息转换;便于传输,为纯文本形式,可通过Http协议直接传输,可跨越防火墙等等。系统还可以采用Oracle、MS SQL Server、DB2、mysql等其他数据库。
在系统平台层和数据层的支持下,系统通过服务层来对整个平台提供服务。提供给用的支持和标准化的应用接口。用户认证中心就建立在服务层,给每一个用户一个建立用户标识,并负责对每一个登录客户进行系统认证。
在服务层之上系统构架了应用层。应用层包括单位各种综合应用,如指挥自动化网、政治工作宣传网、财务网等。由于系统提供标准化接口,因此,单位内部现在已有的应用系统和以后开发的应用只要使用标准化接口,就可以方便、无缝地构架在系统平台应用中。
整个这个多层次结构组成了的系统的整体,通过多层次的结构应用,系统的扩展性和灵活性都得以保证,并且具有了更广阔的适用性。
基于J2EE用户登录实现
1.系统实现原理
用户在访问系统组件中的任何一个页面,系统都会转到登录界面,在用户登录后,系统会自动转会到客户上次请求的页面。并且用户此后可以在系统中无缝切换,不需要再次进行登录,实现了一站式登录。
系统实现步骤如下:
⑴ 用户访问应用系统。
⑵ 应用系统假如检查到用户没有在自己的服务器登录,则将用户请求重定向到用户认证中心上。
⑶ 用户认证中心验证用户的实时状态,假如用户没有登录,则自动转向认证中心的用户登录界面。假如已经登录,将用户标识及用户令牌,重定向回应用系统。
⑷ 用户认证中心验证用户身份后,生成用户令牌,重定向回应用系统。
⑸ 应用系统接收统一格式的用户令牌,取得用户在本系统上的登录账号,将用户在本系统上状态置为登录,返回用户请求访问的页面。
⑹ 假如用户在访问应用系统之前已经在应用系统登录服务器上登录过,第二步到第五步对用户来说就是透明的,用户感觉只是向应用系统发出了访问请求,然后得到了正确的页面反馈。
从上面的流程,我们可以知道,不管用户访问哪个应用系统,用户只需要一次登录,就保证用户在整个系统中的状态都是在线的,不再需要进行第二次登录。
2.系统实现要害代码
系统定义了三个Session变量:
UserID:标识用户身份;
Pass:标识用户即时状态;
Url:保存了上次请求的页面,以保证在用户登录后能转到用户请求的页面。
初始化时:
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1> <tr><td>Protected void init() { Session.Add("UserID", 0); Session.Add("Pass", false); Session.Add("Url", ""); }</td></tr> </table>
对于验证过程,首先将传递过来的参数保存到Session中。如果用户没有登录,则转到Login.jsp页面进行登录。如果用户已经登录了。则将用户标识和用户令牌重定向到应用系统访问页面。
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1><tr><td>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") }}</td></tr></table>
结束语
我们
相关新闻>>
- 发表评论
-
- 最新评论 更多>>