楚孟慧,趙子銳,劉曉培
(山東科技大學(xué)電氣信息系,山東濟(jì)南,250031)
Web網(wǎng)頁(yè)技術(shù)在醫(yī)療、教育、環(huán)保等各種方面都有涉及,對(duì)我們的生活帶來了極大的便利。在用戶使用網(wǎng)頁(yè)進(jìn)行操作時(shí)隨之而來如何使用戶在瀏覽網(wǎng)頁(yè)時(shí)能夠暢通無阻,并且保護(hù)網(wǎng)站安全就成了網(wǎng)頁(yè)開發(fā)人員十分關(guān)注的問題。利用Session進(jìn)行網(wǎng)頁(yè)間的信息共享能夠提高瀏覽網(wǎng)頁(yè)的瀏覽速度,減少信息的重復(fù)填寫。掌握Session傳遞信息的技術(shù)對(duì)技術(shù)人員來說是至關(guān)重要的。
Session是在中文中的意思是會(huì)話,該會(huì)話開始于用戶登錄該頁(yè)面成功時(shí)結(jié)束于離開這個(gè)站點(diǎn)時(shí)。網(wǎng)頁(yè)是不能夠存在狀態(tài)的,所以網(wǎng)頁(yè)之間無法知道用戶的目前狀態(tài),因此Session技術(shù)的存在是十分重要的。每個(gè)用戶登錄頁(yè)面時(shí)都會(huì)獲得一個(gè)Session用來存儲(chǔ)此用戶的信息。當(dāng)用戶切換不同的頁(yè)面時(shí),Session中的信息也一直存在。一般情況下,只要是不同頁(yè)面中的變量與常量信息是不能共享的,但Session解決了這一問題,Session中的變量可作為全局變量,用于頁(yè)面之間信息共享。
Session在整個(gè)網(wǎng)頁(yè)系統(tǒng)中是作為全局變量的存在。為了使用戶在瀏覽網(wǎng)頁(yè)以及進(jìn)行網(wǎng)頁(yè)間的跳轉(zhuǎn)時(shí)能夠暢通無阻,獲取Session就需要在最開始進(jìn)入網(wǎng)頁(yè)時(shí),此處以登陸界面為例獲取用戶信息。首先瀏覽器加載出現(xiàn)登錄頁(yè)面,通常有兩項(xiàng)需要輸入這兩項(xiàng)分別是用戶名和密碼。當(dāng)輸入用戶名和密碼結(jié)束時(shí),點(diǎn)擊登錄按鈕此時(shí)頁(yè)面中的用戶名和密碼被封裝成一個(gè)user類對(duì)象,并與數(shù)據(jù)庫(kù)中的用戶名和密碼進(jìn)行匹配其具體過程為:在頁(yè)面輸入的用戶名與數(shù)據(jù)庫(kù)中的用戶名相同的情況下查詢密碼是否一致,若密碼也相同則證明存在該用戶存在并且通過了密碼驗(yàn)證。表示該用戶登陸成功。登陸成功之后我們需要將該用戶的信息在其他頁(yè)面共享。首先需要先獲取Session對(duì)象然后需要將該用戶在數(shù)據(jù)庫(kù)中的所有信息放入獲取的Session對(duì)象中。并給Session一個(gè)key值用于標(biāo)記此Session對(duì)象。當(dāng)需要此對(duì)象時(shí)可以通過key值取出。此時(shí)Session中即已經(jīng)存在該用戶的信息,并作用于整個(gè)網(wǎng)頁(yè)瀏覽過程中。獲取Session流程圖如圖1所示。

圖1 登錄頁(yè)面Session獲取
Session獲取代碼:

其中user是包含該用戶所有信息的實(shí)體類,引號(hào)里面的字符串”user”是標(biāo)識(shí)該Session的鍵值,通過該鍵值可以將Session中的數(shù)據(jù)取出。
Cookie僅僅存在于客戶端瀏覽器中,需要用戶允許客戶端的Cookie支持。Cookie是一種用于用于維護(hù)網(wǎng)頁(yè)信息的機(jī)制,直到用戶禁止使用或者刪除。比如,如果我們?cè)诘卿涰?yè)面時(shí)輸入了用戶名和密碼并將這兩項(xiàng)保存到Cookie中,在下一次登錄頁(yè)面時(shí)就不再需要輸入用戶名和密碼。其中輸入的信息是以文本形式保存在瀏覽器中。如果我們不需要Cookie或者想要更新Cookie中的內(nèi)容可以隨時(shí)隨地的刪除它。Cookie的內(nèi)容是一種可以在用戶端隨時(shí)隨地被用戶查看的,所以安全性較差,不適用用于保存密碼等需要加密的信息。
Session又被稱作會(huì)話,位于服務(wù)器端。Session中存在的數(shù)據(jù)主要是負(fù)責(zé)訪問者與網(wǎng)站服務(wù)器之間的交互。當(dāng)瀏覽器第一次發(fā)送請(qǐng)求時(shí),服務(wù)器自動(dòng)生成了一個(gè)Session和一個(gè)SessionID,當(dāng)用戶輸入網(wǎng)址時(shí)將Session中存儲(chǔ)的信息與服務(wù)器信息相匹配。當(dāng)該頁(yè)面關(guān)閉時(shí)就代表該會(huì)話已經(jīng)結(jié)束,我們就無法訪問Session中的信息了。由此看來,Session是一種無法長(zhǎng)久保留數(shù)據(jù)的會(huì)話。當(dāng)網(wǎng)站被刪除或者被禁止我們也就無法訪問其中的信息。所以Session相對(duì)于Cookie來說更為安全。Cookie與Session的區(qū)別總結(jié):
(1)Cookie數(shù)據(jù)存放在用戶瀏覽器中,Session數(shù)據(jù)存放在服務(wù)器上。
(2)Cookie安全性較低,Session安全性較高。
(3)Session一般會(huì)在訪問時(shí)間內(nèi)保存在服務(wù)器上,當(dāng)訪問量過大時(shí)會(huì)占用較多的服務(wù)器資源。
在大多數(shù)系統(tǒng)中,不同用戶的權(quán)限是不同的。通常可以分為普通用戶和管理員用戶。普通用戶與管理員用戶可以操作的區(qū)域和內(nèi)容也是不同的。在一個(gè)系統(tǒng)中,如何區(qū)分管理員用戶和普通用戶就是一個(gè)非常重要的問題,此處我們利用Session存儲(chǔ)的用戶信息來對(duì)用戶進(jìn)行區(qū)分。前文中已經(jīng)提到如何獲取Session以及如何在登陸時(shí)將用戶信息存儲(chǔ)在Session中,此時(shí)該用戶的權(quán)限信息就已經(jīng)存在于Session中的存儲(chǔ)的user對(duì)象中了。在進(jìn)行管理員用戶與普通用戶的區(qū)分時(shí),我們只需要將user類中權(quán)限屬性的值取出并判斷user類中的權(quán)限屬性的值就可以判斷該用戶具有管理員權(quán)限還是普通用戶權(quán)限。為了保證在整個(gè)訪問過程中都是有效的所以將此信息存儲(chǔ)在Session中。通過判斷出的用戶權(quán)限可以控制用戶能夠操作的模塊對(duì)于那些不能操作的沒有權(quán)限的模塊就可以給出相應(yīng)提示。這樣就能有效的將管理員用戶和普通用戶或者其他用戶的不同權(quán)限有效的區(qū)別開。這樣在資源共享的前提下網(wǎng)頁(yè)中不同的功能就能夠受到保護(hù),提高了網(wǎng)頁(yè)安全系數(shù),減少了不必要的系統(tǒng)的開發(fā)。利用Session判斷權(quán)限流程圖如圖2所示。

圖2 Session判斷用戶權(quán)限
當(dāng)用戶登錄時(shí)如果用戶輸入了錯(cuò)誤密碼,又或者記錯(cuò)了自己的用戶名,此時(shí)登陸界面上就應(yīng)根據(jù)不同的情況給出不同的提示這樣能夠提醒用戶找出錯(cuò)誤。這種能夠區(qū)分不同情況的提示我們可以使用Session來實(shí)現(xiàn)。首先用戶輸入用戶名和密碼,在邏輯業(yè)務(wù)層獲取頁(yè)面輸入的數(shù)據(jù)并且將其作為參數(shù)傳入數(shù)據(jù)庫(kù)訪問層,在數(shù)據(jù)庫(kù)訪問層中調(diào)用相應(yīng)函數(shù)來與數(shù)據(jù)庫(kù)中的已經(jīng)存在的用戶信息進(jìn)行核對(duì),并根據(jù)錯(cuò)誤進(jìn)行分類,將錯(cuò)誤信息封裝在結(jié)果類中。將此結(jié)果類作為函數(shù)的返回值傳回邏輯業(yè)務(wù)層,邏輯業(yè)務(wù)層將此結(jié)果放入Session中,并在頁(yè)面中寫入獲取Session的代碼,并將Session中的內(nèi)容取出,展示到頁(yè)面上。當(dāng)沒有錯(cuò)誤時(shí)獲取Session的值也不會(huì)出現(xiàn)空指針異常,能夠保證該程序在多種情況下也能正常運(yùn)行。這樣用戶就能根據(jù)不同的提示修改密碼。流程圖為圖3所示。

圖3 信息反饋流程圖
此處頁(yè)面代碼為:
邏輯層代碼:



代碼解析:test相當(dāng)于if語(yǔ)句中的判斷條件,當(dāng)條件lr.result滿足時(shí)lr(login result)中的登錄信息即lr.message就會(huì)顯示到頁(yè)面上否則就會(huì)顯示另一個(gè)登陸成功的結(jié)果。采用
隨著網(wǎng)頁(yè)技術(shù)的發(fā)展利用Session進(jìn)行頁(yè)面信息共享已經(jīng)成為不可或缺的一部分,Session信息共享功能也可以應(yīng)用到用戶登錄、權(quán)限管理和錯(cuò)誤信息提示上使得Session的作用得到了擴(kuò)展。利用Session頁(yè)面信息共享技術(shù)能夠?qū)崿F(xiàn)頁(yè)面流暢切換、網(wǎng)頁(yè)權(quán)限安全保護(hù)以及減少代碼的重復(fù)率。因此掌握Session共享數(shù)據(jù)的方法對(duì)每個(gè)設(shè)計(jì)師來說都是至關(guān)重要的。