J2EE項目登入方式的改進設計與實現
來源:互聯網
上載者:User
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存放裝置,將個人的資訊儲存其中,進行登入認證,取得了良好的效果。