国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于SSM+Spring Security的多角色登錄功能后臺(tái)實(shí)現(xiàn)

2020-04-23 01:22孫云杰段祎林田盼棟趙雪玲
電子技術(shù)與軟件工程 2020年5期
關(guān)鍵詞:教學(xué)系統(tǒng)密碼框架

孫云杰 段祎林 田盼棟 趙雪玲

(西安石油大學(xué)理學(xué)院 陜西省西安市 710300)

1 引言

隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,登錄界面的功能給開發(fā)者提出了更高的要求, 登錄界面具有在控制用戶權(quán)限、記錄用戶行為的同時(shí),保護(hù)操作安全的作用,所以它是必須提供賬戶和密碼的界面。開發(fā)者和用戶看到的登錄界面是不同的“景向”,用戶要求的登錄界面是:便捷、美觀和實(shí)用;而開發(fā)者既要考慮登錄功能的認(rèn)證和授權(quán),又要保障操作的安全性,還要簡化實(shí)現(xiàn)功能的繁瑣代碼等一系列問題。

2 登錄界面核心要素及重要技術(shù)

2.1 核心要素

在實(shí)現(xiàn)多角色多用戶登錄的教學(xué)系統(tǒng)設(shè)計(jì)中,必須要通過如下的措施來保障系統(tǒng)的正常運(yùn)行。

(1)多角色用戶認(rèn)證,登錄功能需要根據(jù)用戶的角色授予相應(yīng)的權(quán)限,因此在教學(xué)系統(tǒng)中設(shè)定三種用戶角色:學(xué)生、教師和管理員;

(2)預(yù)防Web 的惡意攻擊,就需要在登錄時(shí),做好Web 免受攻擊的防御措施,Web 常見的攻擊手段:惡意腳本發(fā)起攻擊(XSS)、借助cookie 偽造認(rèn)證發(fā)送請(qǐng)求攻擊(CSRF)、用SQL 語句偽造參數(shù)發(fā)出攻擊、大量請(qǐng)求指令使服務(wù)器崩潰(DDoS)等等;

(3)考慮用戶停留頁面無任何操作或者關(guān)閉頁面一段時(shí)間后,避免在信息泄露引起不必要的紛爭(zhēng)等情況;

(4)要限制單用戶同時(shí)在不同的設(shè)備上運(yùn)行;

(5)確保用戶密碼的安全,在密碼的傳輸和存儲(chǔ)中都需要以密文的形式進(jìn)行,加密方式應(yīng)當(dāng)采用不可逆的Нash 算法,如:MD5 算法、SНA 系列算法等;

(6)為了防止黑客使用暴力破解方式進(jìn)行登錄嘗試,在登錄時(shí)需要添加驗(yàn)證碼進(jìn)行驗(yàn)證。

2.2 重要技術(shù)

完美的教學(xué)系統(tǒng)設(shè)計(jì)離不開技術(shù)的支持,該系統(tǒng)中所設(shè)計(jì)的技術(shù)有:

(1)Bootstrap 是最受歡迎的НTML、CSS 和JS 框架之一,所以采用Bootstrap 作為主要的前端框架進(jìn)行頁面編寫,用于開發(fā)響應(yīng)式布局、移動(dòng)設(shè)備優(yōu)先的WEB 項(xiàng)目。

(2)SSM框架是Spring、SpringMVC 和MyBatis框架的組合,是Java 領(lǐng)域采用標(biāo)準(zhǔn)的MVC 模式構(gòu)成的開源Web 框架,是以Spring 為核心的分層架構(gòu),它的出現(xiàn)能解決Web 系統(tǒng)中規(guī)模龐大的應(yīng)用、復(fù)雜度不斷提升的問題[1]。

Spring 利用控制反轉(zhuǎn)(IoC)技術(shù)促進(jìn)了低耦合,在系統(tǒng)運(yùn)行中IoC 能動(dòng)態(tài)地向某個(gè)對(duì)象提供它所需要的其他對(duì)象;而面向切面編程(AOP)則是用來提升內(nèi)聚,可以方便地實(shí)現(xiàn)對(duì)程序進(jìn)行權(quán)限攔截、運(yùn)行監(jiān)控等功能[2]。

SpringMVC 是Spring 提供的一個(gè)強(qiáng)大而靈活的Web 框架,借助于普通Java 對(duì)象(POJO) 的開發(fā)模式,使用注解的方式進(jìn)行開發(fā),能夠讓開發(fā)者直觀明了地進(jìn)行設(shè)計(jì)和學(xué)習(xí),從而簡化控制器的開發(fā)和測(cè)試[3]。

圖1:登錄功能的數(shù)據(jù)庫結(jié)構(gòu)圖

MyBatis 是持久層框架,它的核心技術(shù)是對(duì)象關(guān)系映射(ORM),實(shí)現(xiàn)了Java 數(shù)據(jù)庫連接(JDBC)的封裝,可以使用簡單的xml 文件配置或注解,做到接口和Java 的POJO 與數(shù)據(jù)庫中數(shù)據(jù)表的記錄相映射,使得編程人員可以使用面向?qū)ο蟮木幊趟枷雭聿僮鲾?shù)據(jù)庫,將數(shù)據(jù)庫層完全隱蔽[1]。

(3)Spring Security 是基于Spring 的企業(yè)應(yīng)用系統(tǒng),能提供聲明式的訪問控制的安全框架,其中有一組可以在Spring 應(yīng)用上下文中配置的Bean 及相關(guān)的配置文檔,借助于IOC,DI (依賴注入)和AOP 功能將用戶身份認(rèn)證進(jìn)行統(tǒng)一的管理,從而實(shí)現(xiàn)對(duì)資源訪問的綜合管控與維護(hù)[4]。

3 數(shù)據(jù)庫的設(shè)計(jì)

數(shù)據(jù)庫是登錄界面的靈魂,是它把重要技術(shù)和核心要素有機(jī)的結(jié)合在一起。登錄功能的數(shù)據(jù)庫里有兩個(gè)實(shí)體表:用戶表和角色表,用戶和角色多對(duì)多的關(guān)系,中間表是用戶和角色的紐帶。其中,用戶表中密碼存儲(chǔ)的是經(jīng)過加密后的密碼,如圖1 所示。

4 登錄功能模塊架構(gòu)

4.1 模塊依賴總覽

登錄功能的開發(fā)離不開如下五個(gè)模塊:common 公用工具類; entity 實(shí)體類; login 登錄功能模塊(程序入口); mapper 映射器類; service 服務(wù)類。模塊之間的依賴關(guān)系(如圖2 所示)是: login 模塊依賴common、entity、service 模塊; service 模塊依賴entity、mapper 模塊; mapper 模塊依賴entity 模塊。

4.2 主要的模塊

4.2.1 common 模塊

common 模塊封裝公用的工具類,其中包含三個(gè)類:ApiResponse(通用的API 接口封裝)、BaseException(異常基類)和SecurityException(全局異常);一個(gè)接口:IStatus(狀態(tài)碼接口);兩個(gè)枚舉:Roles(用戶角色枚舉)、Status(通用狀態(tài)碼)。Roles枚舉中定義了三個(gè)用戶角色:學(xué)生(Student)、教師(Teacher)、管理員(Administrator),分別與數(shù)據(jù)庫role 表中的角色對(duì)應(yīng)。其中,“ROLE_”是Spring Security 角色權(quán)限的特定前綴。

圖2:模塊依賴總覽圖

4.2.2 entity 模塊

entity 模塊封裝實(shí)體類,其中包含兩個(gè)實(shí)體類:User(用戶)、Role(角色),這個(gè)模塊在項(xiàng)目中引入了lombok,是為了在編譯時(shí)自動(dòng)為實(shí)體類的屬性生成構(gòu)造器、getter/setter、equals、hashcode、toString 方法,在編譯生成的字節(jié)碼文件中會(huì)自動(dòng)生成getter 和setter 方法。

4.2.3 mapper 模塊

mapper 模塊封裝映射器,任持久層的角色,其中包含兩個(gè)映射器接口:UserMapper、RoleMapper,兩個(gè)配置文件UserMapper.xml、RoleMapper.xml。mapper 是MyBatis 集成在項(xiàng)目中的核心內(nèi)容,為service 層提供調(diào)用方法,實(shí)現(xiàn)java 對(duì)數(shù)據(jù)庫的增、刪、改、查操作。

4.2.4 service 模塊

service 模塊封裝服務(wù)類, 是業(yè)務(wù)層的角色,其中包含一個(gè)服務(wù)類:UserDetailsService,實(shí)現(xiàn)了Spring Security 的核心接口,主要用于加載用戶特定的數(shù)據(jù)。

4.2.5 login 模塊

login 模塊為程序的入口,主要實(shí)現(xiàn)用戶的登錄認(rèn)證、授權(quán)功能,其中包含四個(gè)package:config(配置類,包括SecurityConfig核心配置)、cotroller(前端控制器,包括LoginController 登錄控制器、CaptchaController 驗(yàn)證碼生成器)、filter(過濾器,包括CaptchaVerifyFilter 驗(yàn)證碼驗(yàn)證過濾器)、handle(處理器,包括CustomizedAuthenticationSuccessНandler 認(rèn)證成功處理器、Custom izedAuthenticationFailureНandler 認(rèn)證失敗處理器),和啟動(dòng)類:LoginApplication。

系統(tǒng)登錄控制器LoginController 的核心代碼如下(由于篇幅有限,其它模塊的代碼不再詳述):

Spring Security 的核心配置類:SecurityConfig,在其核心代碼中配置了CaptchaVerifyFilter 驗(yàn)證碼驗(yàn)證過濾器,設(shè)置X-Frame-Options 為SAMEORIGIN,CustomizedAuthenticationSuccess Нandler 認(rèn)證成功處理器,而CustomizedAuthenticationFailureНand ler 是認(rèn)證失敗處理器,期間開啟csrf 攻擊的防御功能,登錄和注銷的基礎(chǔ)配置,使訪問路徑的訪問權(quán)限合法化,session 管理器,BCryptPasswordEncoder 加密方法。

圖3:登錄頁面

圖4:登錄驗(yàn)證碼驗(yàn)證界面

Spring Security 中的BCryptPasswordEncoder 方法,采用SНA-256+隨機(jī)鹽+密鑰對(duì)密碼進(jìn)行加密,SНA 系列是Нash 算法,其過程是不可逆的,主要是為了加強(qiáng)密碼保存的安全性而設(shè)計(jì)的。

5 登錄界面前端頁面

利用上面所講述的方法完成的教學(xué)系統(tǒng)登錄界面如圖3、圖4所示。

6 總結(jié)

登錄功能在視覺上的美觀、便捷的操作以及用戶信息的安全,是一個(gè)網(wǎng)站的剛性需求。

網(wǎng)站的入口、門面是網(wǎng)站的第一道防線,安全的重要性不言而喻,集成了Spring Security 為登錄功能的開發(fā)手段,給使用者提供了極大的便利及安全保障。登錄功能看似簡單,但深究其背后的設(shè)計(jì)與開發(fā),可以引申出諸多問題需要我們不斷完善與充實(shí)。

猜你喜歡
教學(xué)系統(tǒng)密碼框架
密碼里的愛
基于Unity的計(jì)算機(jī)硬件組裝仿真教學(xué)系統(tǒng)設(shè)計(jì)
廣義框架的不相交性
密碼抗倭立奇功
多地遠(yuǎn)程互動(dòng)同步教學(xué)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
WTO框架下
基于交互式雙板教學(xué)系統(tǒng)的高中地理教學(xué)研究
汽車配件營銷實(shí)踐教學(xué)系統(tǒng)開發(fā)
一種基于OpenStack的云應(yīng)用開發(fā)框架
奪命密碼
巩义市| 如东县| 玉林市| 苍溪县| 浦北县| 合肥市| 鄂温| 玉山县| 天津市| 东莞市| 原平市| 龙海市| 金堂县| 彰化县| 本溪市| 金华市| 南靖县| 乐安县| 抚州市| 广饶县| 五大连池市| 东方市| 涪陵区| 南召县| 商水县| 云霄县| 偏关县| 犍为县| 阜城县| 长宁县| 双鸭山市| 白沙| 龙岩市| 凤山县| 朝阳区| 济南市| 乌什县| 宿松县| 繁昌县| 宝山区| 长岭县|