999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Spring Security 框架的前后端分離軟件平臺構建的研究

2022-03-09 01:50:42崔娟章恒馬堯田全紅金瑞欣馬鵬王小龍楊梓涵張園琳楊元娟陳春霖
科學技術創新 2022年4期
關鍵詞:數據庫用戶系統

崔娟* 章恒 馬堯 田全紅 金瑞欣 馬鵬 王小龍 楊梓涵 張園琳 楊元娟 陳春霖

(甘肅省計算中心,甘肅 蘭州 730030)

用Javaweb 開發時,效率低下、要配置很多的xml 文件,調試不方便,制約了程序員的開發效率。對于開發的系統而言,其安全性更是關注的重點,從系統上線開始,軟件就承受著各種各樣的攻擊,最常見的sql 注入攻擊,就可以通過使用安全框架Spring Security 解決。傳統的開發習慣將后端代碼和前端代碼混合到一起,使得前端和后端開發人員無法明確的分工,往往開發人員需要同時關注后端代碼邏輯和前端頁面樣式顯示,增加開發人員的壓力,同時也因為前端代碼和后端代碼混合在一起,導致代碼可讀性差,耦合性高,前端樣式的改變需要重啟后端服務,浪費開發人員大量時間;而前端采用Vue 框架使得開發人員從繁瑣的DOM 操作中脫離出來,利用springboot 技術可以很快的開發出項目。

1 項目開發流程

總體思路:

開發一個系統,首先需要了解需求,確定開發架構,設計數據庫,設計相應的原型圖,根據業務要求,考慮系統的整個設計框架。而作為后端這塊,需要考慮接口的授權和用戶的身份認證問題。根據Spring Security 安全框架的機制設定,除了白名單中的資源,其他的接口都需要身份認證的前提下才能訪問成功,若用戶在沒有登錄的情況下在瀏覽器上發送任何請求,都會進行攔截,提示當前是未登錄狀態,需要先登錄。這樣從身份認證上第一步保證了系統的安全性。其次當用戶登錄成功,即身份驗證通過的前提下,后端通過token 判斷登錄狀態,校驗成功后判斷用戶角色,為其分配前端菜單資源,以及授權相應的接口資源,若該用戶直接通過url 訪問不屬于他的資源,根據Spring Security 安全框架機制,會攔截其的請求,提示沒有權限訪問該資源,這樣再次保證了系統數據的安全性。而作為前后端分離的項目,一般會跨端口,跨ip,這樣前端在請求后端接口的時候,我們需要解決跨域的問題才能讓前后端互通起來,前端調后端接口才能訪問成功。前后端才能互相訪問,進行數據交互。

2 搭建后端項目

2.1 數據持久層

開發一個系統,數據庫是必不可少的,它是我們系統的數據來源,這里我們選擇MySQL8.0 版本的數據庫,在傳統的后端和數據庫關系中,Java 類和數據庫中的字段沒有一一對應的關系。如果需要將一個對象插入數據庫中,需要先從對象中獲取出來,寫對應的sql 語句,再一個字段一個字段的插入數據庫的表中,而現在根據數據持久層JPA 或者Mybatis或Mybatis-plus,將java 中的實體類和數據庫中的表進行映射,使得實體類的屬性和表字段一一對應起來,這樣可以很快的操作數據庫,簡化了數據庫的設計和實體類的創建。數據庫持久層JPA 是通過在后端代碼中創建類,通過注解@Entity 標明該類是個實體類,可以根據自定義的駝峰命名規則,在運行項目的時候會自動在數據庫中創建出對應的表,而Mybatis 和Mybatis-plus 被稱為逆向工程,則剛好相反,先創建數據庫,設計表字段,然后運行項目生成對應的實體類。本文以Mybatis 數據庫持久層為例,進行項目講解。

2.2 創建spring boot 項目

2.2.1 創建數據庫實體類

通過開發工具idea 創建spring 父項目,再創建數據持久層Mybatis 和業務邏輯兩個模塊,MyBatis 模塊引入相應的pom 依賴,編寫mybatis 生成器主函數。

在resource 目錄下配置相應的xml 文件, 將xml 中的tableName 值賦值為%,運行該模塊主函數,將生成跟數據庫對應的實體類,mapper 接口,xml 文件。

2.2.1.1 實體類就是跟數據庫中表映射,若是修改實體類的字段,需要重新加載對應的表,進行覆蓋。

2.2.1.2 mapper 接口,定義了一些基本操作數據庫的接口,具體實現和生成的mapperXml 文件對應,該xml 文件就是操作數據庫的sql 文件。后續根據業務的需要,自定義的sql 查詢語句就可以放到該xml 文件中。

引入數據庫持久層Mybatis 后,對數據庫的基本增刪改查就不需要再編寫,mapper 接口幫我們已經自動生成了簡單的增刪改查接口。簡化了我們編寫大量重復的sql 文件,而且可以將代碼邏輯層和sql 語句分開,使得代碼更清晰。

2.2.2 身份認證

一個系統有登錄就有認證,認證就是對身份的校驗,傳統的登錄認證機制是通過session 和cookie 進行身份識別,由于cookie 無法進行跨域訪問,本文引入token 機制。通過jwt令牌生成token, 進行身份認證。JWT 的全稱是 Json Web Token,是一種JSON 風格的輕量級的授權和身份認證規范,實現了無狀態、分布式的Web 應用授權,它的數據格式有三部分組成,頭部、荷載和簽名。荷載主要包括登錄用戶的賬號信息,token 創建時間,主題等。簽名是放入自己的密鑰,對整個token 進行驗證。生成的token 數據格式如圖1 所示,在該項目中我們需要引入security 和jwt 兩個依賴。

圖1

在本系統中身份認證流程圖如2 所示。

圖2

2.2.2.1 用戶通過客戶端輸入用戶名和密碼,發送請求到后端。后端根據輸入的用戶名和密碼進行校驗,通過userDetailsService.loadUserByUsername(userName)的方法去查詢,如果匹配,那么根據這個用戶名生成對應的token,然后將這個token 值返回給前端。

2.2.2.2 前端保存這個token,然后每次請求后端接口的時候,將這個token 放在請求頭Header 當中,參數名為Authorization。

2.2.2.3 前端再次發送請求,后端就會先根據Jwt 相關的攔截器進行攔截,判斷請求頭中是否攜帶這個Authorization,如果沒有,進行攔截,給前端返回尚未登錄,拒絕訪問等信息。如果有,則進行判斷token 值是否有效。token 有效從兩個方面進行判斷,一是token 的荷載中攜帶的用戶名和系統當前UserDetails 中的用戶名是否一致,二是token 中的失效時間是否在當前系統的時間之前,如果都滿足條件則證明從前端傳過來的token 值有效,系統不進行攔截,正常訪問后端接口,若無效,則攔截,提示給前端需要登錄才能訪問。

2.2.3 Spring Security 授權

使用Spring Security 安全框架,解決的問題就是授權和認證,身份認證完成之后就是授權,授權其實就是給不同的用戶分配不同的權限,這個權限可以從兩個方面進行理解,一是角色擁有哪些菜單資源,二是角色擁有哪些接口資源,比如某個角色用戶擁有賬戶管理菜單,但是沒有分配對應的接口資源,那么他只能看到該頁面的樣子,但是不能調用該頁面上涉及的接口,操作該頁面上的數據資源,如圖3 所示。

圖3

對于一個用戶請求接口,權限控制進行如下判斷:第一根據用戶獲取角色列表,第二根據請求的url 地址判斷需要的角色,第三將前兩步中的角色進行對比,如果有交叉關系,說明有相應的權限,那么該用戶就可以請求該接口地址,獲取數據。否則沒有權限。

3 搭建前端項目

3.1 解決跨域問題

在開發工具WebStrom 下創建vue 項目,因為前后端分離,無法相互通信,為了能成功訪問到后端接口,我們需要解決跨域的問題,有兩中解決思路,一種是在后端代碼中配置,另一種是前端配置代理,前端解決思路是新建一個js 文件,配置如圖4 所示代碼,將target 中的地址換成后端服務器上的IP 和端口號。

圖4

3.2 前后端數據交互問題

前后端數據交互,我們采用的是json 格式,json 是一種輕量級的數據交換格式,JSON 獨立于語言:JSON 使用Javascript 語法來描述數據對象,JSON 解析器和JSON 庫支持許多不同的編程語言。目前非常多的動態(PHP,JSP,.NET)編程語言都支持JSON。

對于登錄的接口來說,后端需要前端傳過來一個對象,這個對象包括兩個屬性,用戶名username 和密碼password,那么前端就需要定義好這個對象,loginForm: { username: '',password: ''},需要注意的是前后端定義的這個屬性名必須一致,后端用的是username,那么前端也必須用username,否則請求后端接口會失敗。

因為身份認證問題,后端需要攔截前端這邊的請求,查看請求頭里面是否攜帶Authorization,那么前端需要在登錄成功,拿到返回值之后,將這個token 寫到請求頭里面,然后每次請求的時候都攜帶這個token。前端需要做如下兩個步驟:

(1)將登錄接口返回的對象我們可以選擇放到Session Storage 或者Cookies 中保存下來

(2)配置請求攔截器,每次前端發起請求,都走這個攔截器,如果第一個步驟中有值,就將里面的token 放到請求頭里面,如圖5 所示,這樣每次請求都帶這個請求頭,如圖6 所示。

圖5

圖6

4 結論

系統安全問題一直是開發人員考慮的重中之重,結合spring Security 安全框架的使用,從身份認證和授權上,可以很大程度的保護我們程序的安全性。而基于當下流行的前后端分離模式的開發,更是每個開發人員所必須掌握的技術,本文從數據庫,后端項目編寫,前端數據請求等方面介紹了基于Spring Security 的前后端分離模式開發流程,理清開發思路,能夠快速上手開發出基于spring boot 的項目,在后續項目上集成Redis,ELK 日志等插件的使用進行擴展,也能夠快速打成jar 包,利用docker 進行部署在服務器上使用。

猜你喜歡
數據庫用戶系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
數據庫
財經(2017年2期)2017-03-10 14:35:35
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數據庫
財經(2016年15期)2016-06-03 07:38:02
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 国产一级妓女av网站| 国产乱人免费视频| 精品久久综合1区2区3区激情| 毛片最新网址| 欧美h在线观看| 人妻免费无码不卡视频| 制服无码网站| 日本高清有码人妻| 中文无码毛片又爽又刺激| 四虎成人免费毛片| 日本亚洲成高清一区二区三区| 久久国产高清视频| 先锋资源久久| 经典三级久久| 天天色综合4| 国产精品无码一二三视频| 久久伊人久久亚洲综合| 沈阳少妇高潮在线| 国产91在线|日本| 国产爽妇精品| 日本在线国产| 丁香五月激情图片| 免费A∨中文乱码专区| 亚洲综合色婷婷| 国产成人一区免费观看| 日韩精品专区免费无码aⅴ| 综合色88| 精品无码国产自产野外拍在线| 国产又色又爽又黄| 无码粉嫩虎白一线天在线观看| 欧美性猛交xxxx乱大交极品| 国产欧美又粗又猛又爽老| 人妻免费无码不卡视频| 亚洲一道AV无码午夜福利| 国产成人精品亚洲77美色| 免费国产高清精品一区在线| 亚洲手机在线| 日本高清有码人妻| 欧美成人手机在线观看网址| 久久一色本道亚洲| 国产女人在线视频| 亚洲热线99精品视频| 久久精品女人天堂aaa| 国产免费人成视频网| 中文字幕久久波多野结衣| 国产人人射| 狠狠色婷婷丁香综合久久韩国| 国产成人免费手机在线观看视频| 欧美日韩国产成人高清视频| 香蕉精品在线| 中文字幕亚洲无线码一区女同| 黄片在线永久| 国产亚洲欧美日韩在线一区| 国产麻豆91网在线看| 国产情精品嫩草影院88av| 精久久久久无码区中文字幕| 日本在线亚洲| 亚洲无线一二三四区男男| 亚洲成人福利网站| 99成人在线观看| 国模视频一区二区| 欧美伦理一区| 鲁鲁鲁爽爽爽在线视频观看| 日韩欧美91| 熟妇人妻无乱码中文字幕真矢织江| 亚洲国内精品自在自线官| 91色综合综合热五月激情| 免费观看欧美性一级| 亚洲天堂网在线观看视频| 91娇喘视频| 91在线日韩在线播放| 午夜影院a级片| 午夜啪啪福利| 国产噜噜噜| 欧美激情网址| 亚洲中文字幕在线观看| 久久久久久久97| 欧美全免费aaaaaa特黄在线| 波多野结衣视频网站| 国产精品视频猛进猛出| 国产成人精品免费视频大全五级| 欧美日韩久久综合|