王聰
(江蘇大學 江蘇省鎮江市 212013)
由于辦公系統與門禁系統由不同廠家開發,無法很好的進行協同,且人臉門禁系統功能相對單一,無法限制學生在指定時間內的門禁進出次數與進出的方向,導致部分學生利用系統漏洞,通過先請假出校,長時間逗留校外后再請假進校,達到夜不歸宿、跨城出行等目的。這些行為違反了校規校紀,輔導員等學生管理人員,不得不通過人工查寢的方式來應對上述問題。人工查寢,不僅費時、費力,而且無法做到及時發現問題,難免會有遺漏。
現代Web 應用開發技術日新月異,Vue[1]和Spring Boot[2]等開發框架的誕生和成熟,使得較為快速地開發一個易用、多瀏覽器兼容、部署運維成本低的Web 應用成為可能。因此,為了加強對學生進出學校的管控,并減少輔導員需要人工查寢的工作量,本文基于Vue 和Spring Boot 等開發技術,通過分析學生在辦公系統中的請假記錄與校門門禁進出記錄,設計并實現了一個可以幫助輔導員發現和核實存在夜不歸宿等異常行為學生的輔導員小助手系統。
本系統主要為了輔導員發現存在夜不歸宿等行為的學生服務,此外,為了使系統本身能夠正常穩定運轉,還需要專業的人員對系統本身進行管理維護,這就需要有系統管理員。故本系統主要用戶有兩類:輔導員、系統管理員。
功能性需求是指系統具體的完成某一任務的需要。
輔導員需要能夠使用自己的賬戶密碼進行登錄,也可以使用學校的統一身份認證系統以中央認證服務(Central Authentication Service,CAS)[3]方式登錄。除了登錄,輔導員還能夠退出系統。輔導員最核心的需求是對名下的學生進行管理,包括了學生基本信息查看和學生預警記錄查看。其中,學生基本信息查看包含了學生基本信息、請假/門禁記錄的查看功能,還包含了按照學號、姓名進行搜索學生的功能。學生預警記錄查看則是輔導員能夠查看經過系統自動計算出的存在異常門禁進出行為的學生。
系統管理員和輔導員一樣,需要能夠登錄、退出系統。系統管理員最核心的需求是對整個系統進行一定的管理。包含了定時任務管理、郵件管理、操作日志三大功能。定時任務管理功能包含了對定時任務進行暫定、恢復、新增、刪除、修改等管功能,還包含了查看定時任務執行歷史記錄、執行進度的功能。郵件管理功能包含了郵件發送、查看郵件發送日志的功能。最后,操作日志功能,實際上是一種審計日志查看功能,系統管理員通過該功能,可以查看所有用戶在該系統中的所有操作記錄,用于事后追查用戶的異常行為。
如圖1所示,系統從宏觀上看進行了前后端分離。總共包含前端服務、后端服務和MySQL[4]數據庫這三個部分。前端服務部署于Nginx[5]服務器,對外接收用戶通過瀏覽器發出的請求并進行響應,對內通過HTTP 請求調用后端服務。后端服務和數據庫都部署于Docker[6]容器中,通過Docker 內部的橋接網絡通信,后端以對外暴露符合REST[7](Representational State Transfer)風格的接口來提供服務。
如圖2所示,本系統從層次結構上可以分成:界面交互層、控制層、模型層、數據庫訪問層。安全認證服務貫穿各層始終。界面交互層主要由前端服務提供,用于處理用戶的請求,并返回相應的處理結果給用戶瀏覽器進行界面渲染。其他各層主要由后端提供服務。控制層對外暴露后端服務接口,將接收到的前端請求初步處理后,按照一定規則分發給合適的模型層處理。模型層在收到控制層傳入的請求后,負責對請求進行一系列業務邏輯上的處理,處理中可能會需要調用數據訪問層提供的數據處理服務。數據訪問層負責直接與數據庫交互,對外隱藏具體的數據庫訪問邏輯,提供統一的數據訪問服務。整個系統經過分層之后,使得復雜的功能得以解耦,每層各負其責,有更清晰的職責邊界,也有利于后續代碼的開發和維護。
根據本文第2 節的功能性需求分析,可將整個系統劃分為五個模塊:認證服務模塊、學生管理模塊、定時任務模塊、郵件模塊以及操作日志模塊。認證服務模塊負責用戶登錄、退出等認證授權功能。學生管理模塊負責學生基本信息、請假/門禁記錄、學生異常預警記錄的展示、查詢等功能。定時任務模塊負責定時任務的管理和任務執行日志查看功能。郵件管理模塊負責郵件的發送和發送日志查看功能。操作日志模塊負責審計日志查看、查詢功能。
認證服務提供了系統登錄、退出等功能,是整個系統的基礎。總共提供了兩種登錄方式,分別為普通登錄方式和統一身份認證登錄方式。
普通登錄方式指的是在本系統中直接登錄,由于整個邏輯比較簡單且與統一身份認證登錄方式類似,故不在贅述。本系統使用了JWT(Json Web Token)作為用戶登錄成功后的令牌。JWT 令牌具有緊湊性和URL 安全性,它的典型應用場景是在網絡中傳遞認證用戶的身份信息[8]。用戶在登錄成功之后,后續前端瀏覽器都會緩存這個令牌,每次請求后端服務時會帶上該令牌,用以校驗用戶的身份以及權限。使用令牌可以避免由后端來存儲用戶的會話信息,減少了后端服務的壓力。統一身份認證登錄方式指的是用戶在統一身份認證中心登錄再到本系統進行自動身份認證,實現邏輯圖3所示。這里的關鍵點主要在于本系統的前端、后端與統一身份認證中心的交互。用戶選擇統一身份認證登錄方式之后,前端將頁面重定向到統一身份認證頁面,用戶在該頁面登錄后,由統一身份認證中心再將頁面重定向回本系統,并傳回CAS 令牌。此時,統一身份認證已經完成,接著前端需要拿著CAS 令牌讓后端去校驗,以確保CAS 令牌是真實有效的,后端向統一身份認證中心校驗CAS 令牌后,獲得用戶信息,然后據此生成JWT Token 返回給前端,這部分就跟普通登錄方式一致了。
學生管理模塊主要包括學生基本信息查看、學生預警記錄查看兩大功能,是系統的核心功能所在。如圖4所示,學生基本信息查看又包含了對于學生信息的搜索、學生請假/門禁記錄的查看。如圖5,學生預警記錄功能主要是讓用戶可以查看經過系統自動計算得出的存在異常門禁行為的學生記錄。學生管理模塊側重于數據的查詢與前端頁面的展示,后端服務通過Spring Data JPA 和MyBatis 這兩大對象關系映射(Object Relational Mapping,ORM)[9]框架的混合使用,實現了帶有分頁能力的多條件數據查詢功能。通常來說Spring Data JPA 對數據訪問封裝程度更高,可以實現零SQL(Structured Query Language)語句對數據庫中數據進行操作,但是僅適合于數據模型比較簡單的場景。而MyBatis 則需要更多的配置與SQL 編碼,但是能夠適應更復雜的數據處理場景,比如多表連接查詢。故本系統為了各取所長,混合使用了這兩種框架。
本文論述了基于Vue 和Spring Boot 等技術實現的輔導員小助手系統的設計與實現。首先介紹了項目的背景、涉及到的相關技術。接著從使用系統的用戶、功能性需求等方面分析了系統的需求,進而引出了系統的總體設計,最后介紹了系統實現中涉及到的關鍵技術。

圖1:系統總體架構

圖2:系統層次結構

圖3:統一身份認證登錄時序圖

圖4:學生請假/門禁記錄界面

圖5:學生預警記錄界面
總的來看,在良好的系統設計思想指導下,基于Vue 和Spring Boot 等技術能夠快速的構建一個簡潔、實用、美觀的系統。本系統增強了學校輔導員對于學生夜不歸宿等行為的掌握,減輕了輔導員人工查寢的工作量,發揮了在學生管理中的作用。