楚孟慧,趙子銳,劉曉培
(山東科技大學電氣信息系,山東濟南,250031)
Web網頁技術在醫(yī)療、教育、環(huán)保等各種方面都有涉及,對我們的生活帶來了極大的便利。在用戶使用網頁進行操作時隨之而來如何使用戶在瀏覽網頁時能夠暢通無阻,并且保護網站安全就成了網頁開發(fā)人員十分關注的問題。利用Session進行網頁間的信息共享能夠提高瀏覽網頁的瀏覽速度,減少信息的重復填寫。掌握Session傳遞信息的技術對技術人員來說是至關重要的。
Session是在中文中的意思是會話,該會話開始于用戶登錄該頁面成功時結束于離開這個站點時。網頁是不能夠存在狀態(tài)的,所以網頁之間無法知道用戶的目前狀態(tài),因此Session技術的存在是十分重要的。每個用戶登錄頁面時都會獲得一個Session用來存儲此用戶的信息。當用戶切換不同的頁面時,Session中的信息也一直存在。一般情況下,只要是不同頁面中的變量與常量信息是不能共享的,但Session解決了這一問題,Session中的變量可作為全局變量,用于頁面之間信息共享。
Session在整個網頁系統(tǒng)中是作為全局變量的存在。為了使用戶在瀏覽網頁以及進行網頁間的跳轉時能夠暢通無阻,獲取Session就需要在最開始進入網頁時,此處以登陸界面為例獲取用戶信息。首先瀏覽器加載出現(xiàn)登錄頁面,通常有兩項需要輸入這兩項分別是用戶名和密碼。當輸入用戶名和密碼結束時,點擊登錄按鈕此時頁面中的用戶名和密碼被封裝成一個user類對象,并與數(shù)據庫中的用戶名和密碼進行匹配其具體過程為:在頁面輸入的用戶名與數(shù)據庫中的用戶名相同的情況下查詢密碼是否一致,若密碼也相同則證明存在該用戶存在并且通過了密碼驗證。表示該用戶登陸成功。登陸成功之后我們需要將該用戶的信息在其他頁面共享。首先需要先獲取Session對象然后需要將該用戶在數(shù)據庫中的所有信息放入獲取的Session對象中。并給Session一個key值用于標記此Session對象。當需要此對象時可以通過key值取出。此時Session中即已經存在該用戶的信息,并作用于整個網頁瀏覽過程中。獲取Session流程圖如圖1所示。
圖1 登錄頁面Session獲取
Session獲取代碼:
其中user是包含該用戶所有信息的實體類,引號里面的字符串”user”是標識該Session的鍵值,通過該鍵值可以將Session中的數(shù)據取出。
Cookie僅僅存在于客戶端瀏覽器中,需要用戶允許客戶端的Cookie支持。Cookie是一種用于用于維護網頁信息的機制,直到用戶禁止使用或者刪除。比如,如果我們在登錄頁面時輸入了用戶名和密碼并將這兩項保存到Cookie中,在下一次登錄頁面時就不再需要輸入用戶名和密碼。其中輸入的信息是以文本形式保存在瀏覽器中。如果我們不需要Cookie或者想要更新Cookie中的內容可以隨時隨地的刪除它。Cookie的內容是一種可以在用戶端隨時隨地被用戶查看的,所以安全性較差,不適用用于保存密碼等需要加密的信息。
Session又被稱作會話,位于服務器端。Session中存在的數(shù)據主要是負責訪問者與網站服務器之間的交互。當瀏覽器第一次發(fā)送請求時,服務器自動生成了一個Session和一個SessionID,當用戶輸入網址時將Session中存儲的信息與服務器信息相匹配。當該頁面關閉時就代表該會話已經結束,我們就無法訪問Session中的信息了。由此看來,Session是一種無法長久保留數(shù)據的會話。當網站被刪除或者被禁止我們也就無法訪問其中的信息。所以Session相對于Cookie來說更為安全。Cookie與Session的區(qū)別總結:
(1)Cookie數(shù)據存放在用戶瀏覽器中,Session數(shù)據存放在服務器上。
(2)Cookie安全性較低,Session安全性較高。
(3)Session一般會在訪問時間內保存在服務器上,當訪問量過大時會占用較多的服務器資源。
在大多數(shù)系統(tǒng)中,不同用戶的權限是不同的。通??梢苑譃槠胀ㄓ脩艉凸芾韱T用戶。普通用戶與管理員用戶可以操作的區(qū)域和內容也是不同的。在一個系統(tǒng)中,如何區(qū)分管理員用戶和普通用戶就是一個非常重要的問題,此處我們利用Session存儲的用戶信息來對用戶進行區(qū)分。前文中已經提到如何獲取Session以及如何在登陸時將用戶信息存儲在Session中,此時該用戶的權限信息就已經存在于Session中的存儲的user對象中了。在進行管理員用戶與普通用戶的區(qū)分時,我們只需要將user類中權限屬性的值取出并判斷user類中的權限屬性的值就可以判斷該用戶具有管理員權限還是普通用戶權限。為了保證在整個訪問過程中都是有效的所以將此信息存儲在Session中。通過判斷出的用戶權限可以控制用戶能夠操作的模塊對于那些不能操作的沒有權限的模塊就可以給出相應提示。這樣就能有效的將管理員用戶和普通用戶或者其他用戶的不同權限有效的區(qū)別開。這樣在資源共享的前提下網頁中不同的功能就能夠受到保護,提高了網頁安全系數(shù),減少了不必要的系統(tǒng)的開發(fā)。利用Session判斷權限流程圖如圖2所示。
圖2 Session判斷用戶權限
當用戶登錄時如果用戶輸入了錯誤密碼,又或者記錯了自己的用戶名,此時登陸界面上就應根據不同的情況給出不同的提示這樣能夠提醒用戶找出錯誤。這種能夠區(qū)分不同情況的提示我們可以使用Session來實現(xiàn)。首先用戶輸入用戶名和密碼,在邏輯業(yè)務層獲取頁面輸入的數(shù)據并且將其作為參數(shù)傳入數(shù)據庫訪問層,在數(shù)據庫訪問層中調用相應函數(shù)來與數(shù)據庫中的已經存在的用戶信息進行核對,并根據錯誤進行分類,將錯誤信息封裝在結果類中。將此結果類作為函數(shù)的返回值傳回邏輯業(yè)務層,邏輯業(yè)務層將此結果放入Session中,并在頁面中寫入獲取Session的代碼,并將Session中的內容取出,展示到頁面上。當沒有錯誤時獲取Session的值也不會出現(xiàn)空指針異常,能夠保證該程序在多種情況下也能正常運行。這樣用戶就能根據不同的提示修改密碼。流程圖為圖3所示。
圖3 信息反饋流程圖
此處頁面代碼為:
邏輯層代碼:
代碼解析:test相當于if語句中的判斷條件,當條件lr.result滿足時lr(login result)中的登錄信息即lr.message就會顯示到頁面上否則就會顯示另一個登陸成功的結果。采用
隨著網頁技術的發(fā)展利用Session進行頁面信息共享已經成為不可或缺的一部分,Session信息共享功能也可以應用到用戶登錄、權限管理和錯誤信息提示上使得Session的作用得到了擴展。利用Session頁面信息共享技術能夠實現(xiàn)頁面流暢切換、網頁權限安全保護以及減少代碼的重復率。因此掌握Session共享數(shù)據的方法對每個設計師來說都是至關重要的。