亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        前后端分離模式下的WEB 系統(tǒng)集成方案*

        2020-09-27 14:05:00劉俊波
        通信技術(shù) 2020年9期
        關(guān)鍵詞:鑒權(quán)票據(jù)網(wǎng)關(guān)

        王 鋒,劉俊波

        (中國電子科技集團公司第30 研究所,四川 成都 610041)

        0 引言

        當(dāng)前WEB 系統(tǒng)開發(fā)多采用前后端分離模式。前端組件化、工程化,后端數(shù)據(jù)化;前端實現(xiàn)人機交互邏輯,提供業(yè)務(wù)數(shù)據(jù)展示,后端為前端提供業(yè)務(wù)數(shù)據(jù)支撐;前后端通過RESTful 接口進行數(shù)據(jù)交互。這種模式下前后端架構(gòu)分離,降低了人員要求,開發(fā)效率高,給系統(tǒng)設(shè)計與開發(fā)帶來了極大便利。前后端分離后,一個系統(tǒng)被分割為了兩個獨立的工程。用戶身份不同時,前端需要根據(jù)后端權(quán)限數(shù)據(jù)實現(xiàn)模塊鑒權(quán),同時在多個WEB 系統(tǒng)集成部署時,需要為這些系統(tǒng)提供統(tǒng)一的界面呈現(xiàn),解決系統(tǒng)之間的頁面組件互相調(diào)用、用戶身份的單點登錄、后端資源請求權(quán)限檢測等問題。為此,本文設(shè)計了一種針對前后端分離模式下的WEB 系統(tǒng)集成方案。

        1 總體架構(gòu)

        前后端分離模式下,前端和后端是獨立架構(gòu),互不干涉。不同系統(tǒng)后端服務(wù)采用的語言、框架往往不同,如果要在這些不同系統(tǒng)內(nèi)部實現(xiàn)統(tǒng)一模式的身份認證和權(quán)限檢測,極其困難且代價太高。為此借用微服務(wù)的架構(gòu)模型,在后端服務(wù)前面增加一個獨立的API 網(wǎng)關(guān)模塊[1],專門為這些使用不同語言框架開發(fā)的系統(tǒng)解決如單點登錄、資源鑒權(quán)等共性問題。

        集成方案將系統(tǒng)分為前端展示層、中間接入層和后端業(yè)務(wù)服務(wù)層3 層,架構(gòu)如圖1 所示。展示層即為前后端分離后的純前端,采用vue 框架。中間接入層為API 網(wǎng)關(guān)模塊,通常部署在后端業(yè)務(wù)系統(tǒng)前面,負責(zé)用戶身份認證、權(quán)限檢測和路由轉(zhuǎn)發(fā)等功能。API 網(wǎng)關(guān)與業(yè)務(wù)系統(tǒng)之間采用RESTful 進行交互[2]。后端業(yè)務(wù)邏輯層為業(yè)務(wù)系統(tǒng)的后端服務(wù)。

        圖1 總體架構(gòu)

        2 前端集成

        WEB 前端已經(jīng)從傳統(tǒng)的MVC 模式進一步發(fā)展為MVVM 模式[3]。系統(tǒng)采用vue+vue-router+iview UI 搭建前端基礎(chǔ)開發(fā)框架。vue 是一套用于構(gòu)建用戶界面的漸進式框架[4],具有易用、靈活等特性,便于與第三方庫和既有項目整合,是整個前端框架的技術(shù)核心。vue-router 是針對vue 開發(fā)的路由插件,作為vue 的官方的路由管理器,提供單頁應(yīng)用服務(wù)。iview UI 是一套基于vue 的高質(zhì)量UI 組件,提供如表單控件、按鈕、導(dǎo)航菜單、表格、對話框等常用組件,能夠滿足絕大部分WEB 應(yīng)用場景。前后端交互請求工具采用axios,可以自定義攔截器、處理攜帶票據(jù)、cookie、自動取消請求、防止CSRF/XSRF 等功能。

        2.1 組件引用

        一個業(yè)務(wù)系統(tǒng)由許多業(yè)務(wù)組件構(gòu)成,每個業(yè)務(wù)組件就是一個獨立的模塊,可以單獨打包使用。組件可以進一步劃分為更細小的組件,這里稱為微組件。獨立打包的微組件實際就是一個WEB widget,具有“高內(nèi)聚、低耦合”的優(yōu)點[5]。業(yè)務(wù)系統(tǒng)之間可以調(diào)用對方系統(tǒng)的組件來使用,如圖2 所示。

        圖2 前端頁面組件調(diào)用

        采用vue-custom-element 進行業(yè)務(wù)組件封裝。圍繞vue 組件的小包裝器,能夠在vue、react、angular 這些前端框架中提供無縫的使用方式。頁面中只需要引用相應(yīng)的javaScript 文件,然后在HTML標(biāo)簽中引入相應(yīng)的標(biāo)記即可渲染出vue 組件,為不同業(yè)務(wù)系統(tǒng)組件的相互調(diào)用提供解決方案。

        組件開發(fā)時,為方便每個業(yè)務(wù)組件單獨打包,需要在項目中為該業(yè)務(wù)組件添加一個打包入口文件。該文件的命名方式應(yīng)該與系統(tǒng)名稱和業(yè)務(wù)名稱相呼應(yīng)。例如,某監(jiān)控系統(tǒng)的設(shè)備管理模塊對應(yīng)的打包入口文件命名為monitor-dev,該業(yè)務(wù)組件打包后對應(yīng)文件名稱也為monitor-dev.js。在其他系統(tǒng)中如果需要引用該業(yè)務(wù)模塊,引入monitor-dev.js 以及組件對應(yīng)的HTML 標(biāo)記即可。HTML 標(biāo)記在組件的打包入口文件中定義,標(biāo)記名稱應(yīng)該和入口名稱保持一致,如vue.customElement(‘widget-monitordev’,Dev),其中“widget”表示這個一個vue 微組件,monitor 表示該組件是監(jiān)控系統(tǒng)所有,Dev 表示對應(yīng)的vue 業(yè)務(wù)組件,在HTML 中引入<widgetmonitor-dev></widget-monitor-dev>標(biāo)記對即可加載對應(yīng)的業(yè)務(wù)組件。業(yè)務(wù)組件加載及工作流程如圖3所示。

        ①登錄系統(tǒng);

        ②獲取認證token,存儲到sessionStorage;

        ③使用系統(tǒng)定義的組件加載方法,通過token加載業(yè)務(wù)系統(tǒng)b 的monitor_dev 組件;

        ④業(yè)務(wù)系統(tǒng)b 的組件加載接口向API 網(wǎng)關(guān)驗證token 合法性;

        ⑤下載monitor_dev.js;

        ⑥Monitor_dev 組件使用token 向業(yè)務(wù)系統(tǒng)b 請求業(yè)務(wù)數(shù)據(jù);

        ⑦業(yè)務(wù)系統(tǒng)b 的業(yè)務(wù)模塊向API 網(wǎng)關(guān)驗證token 合法性;

        ⑧業(yè)務(wù)系統(tǒng)b 向客戶端組件返回業(yè)務(wù)數(shù)據(jù)。

        圖3 業(yè)務(wù)組件加載及工作流程

        2.2 前端鑒權(quán)

        前端鑒權(quán)存在兩個方面的需求:一是用戶是否具備組件顯示執(zhí)行權(quán)限;二是組件向后端發(fā)起數(shù)據(jù)請求時后端返回的權(quán)限結(jié)果處理。

        針對組件在前端是否能夠顯示執(zhí)行,需要根據(jù)后端給出的權(quán)限進行判別?;趘ue 的標(biāo)簽指令自定義了一個權(quán)限判斷指令v-permission,該指令會根據(jù)后端返回的用戶接口請求白名單進行匹配,只有當(dāng)該組件所使用接口在白名單中,組件才會被顯示和執(zhí)行。比如,一個設(shè)備添加按鈕組件devadd,頁面引用該標(biāo)簽時增加相應(yīng)的v-permission指 令,<widget-dev-add v-permission></widget-devadd>,那么前端就會對組件顯示進行權(quán)限鑒別。只有當(dāng)前用戶被允許使用設(shè)備添加接口時,該按鈕才會在頁面中顯示出來,否則頁面會隱藏此添加按鈕。

        組件向后端發(fā)起數(shù)據(jù)請求的權(quán)限結(jié)果處理,會通過axios 自定義攔截器實現(xiàn)。axios 攔截器分為請求前攔截和請求后攔截兩種。由于請求結(jié)果是后端返回,所以使用請求后攔截。在這個攔截器中,針對請求結(jié)果的權(quán)限處理可以進行統(tǒng)一定義,使得系統(tǒng)集成時能有一個統(tǒng)一的異常處理模式,從而提高用戶體驗。

        3 后端集成

        后端采用一個專用的API 網(wǎng)關(guān)模塊,負責(zé)業(yè)務(wù)系統(tǒng)注冊、用戶認證和資源訪問鑒權(quán)等方面的集成業(yè)務(wù),使得業(yè)務(wù)系統(tǒng)可以專注于業(yè)務(wù)開發(fā)。

        3.1 系統(tǒng)注冊

        業(yè)務(wù)系統(tǒng)需要在API 網(wǎng)關(guān)上注冊其基本信息和資源信息?;拘畔?yīng)包括系統(tǒng)標(biāo)識、系統(tǒng)地址和端口等;資源信息主要包括菜單定義及接口信息表;這些資源信息有規(guī)范化的格式,多采用xml 數(shù)據(jù)文件格式。API 網(wǎng)關(guān)擁有這些信息后,可以由管理員為用戶訪問配置資源授權(quán)。

        3.2 用戶認證

        API 網(wǎng)關(guān)模塊存在兩種部署模式:一是所有業(yè)務(wù)系統(tǒng)部署在API 網(wǎng)關(guān)模塊后面,資源請求必須通過API 網(wǎng)關(guān)模塊轉(zhuǎn)發(fā),稱為斷路式部署模式;二是業(yè)務(wù)系統(tǒng)可能部署在API 網(wǎng)關(guān)模塊外面,資源請求可以不經(jīng)過網(wǎng)關(guān)直接到達業(yè)務(wù)系統(tǒng),稱為旁路式部署模式。無論選擇哪種部署模式,在多個系統(tǒng)集成時都希望能實現(xiàn)單點登錄模式,即一次登錄認證后對多個業(yè)務(wù)系統(tǒng)都有效,訪問其他業(yè)務(wù)系統(tǒng)時無需再次登錄認證。針對這兩種部署模式,為實現(xiàn)單點登錄,對應(yīng)有兩種登錄認證流程。

        3.2.1 斷路式部署認證

        認證流程如圖4 所示。

        圖4 斷路式部署認證流程

        A:瀏覽器發(fā)起認證登錄;

        B:API 網(wǎng)關(guān)認證(根據(jù)系統(tǒng)實際認證協(xié)議要求確定)成功后,基于JWT 格式生成認證票據(jù)及刷新票據(jù),并返回給瀏覽器客戶端,而瀏覽器客戶端將認證票據(jù)及刷新票據(jù)存儲在客戶端(Session Storage);

        C:瀏覽器訪問任意業(yè)務(wù)系統(tǒng),帶上認證票據(jù),API 網(wǎng)關(guān)驗證票據(jù),解析出用戶身份信息;

        D:API 網(wǎng)關(guān)將請求及用戶信息轉(zhuǎn)發(fā)給相應(yīng)業(yè)務(wù)系統(tǒng)。

        3.2.2 旁路式部署認證

        認證流程如圖5 所示。

        圖5 旁路式部署認證流程

        A:瀏覽器訪問業(yè)務(wù)系統(tǒng),認證登錄;

        B:業(yè)務(wù)系統(tǒng)將請求重定向到API 網(wǎng)關(guān)的認證地址;

        C:瀏覽器向API 網(wǎng)關(guān)認證地址發(fā)起認證請求;

        D:認證(根據(jù)系統(tǒng)實際認證協(xié)議要求確定)成功后,API 網(wǎng)關(guān)向瀏覽器客戶端返回認證授權(quán)碼;

        E:瀏覽器將認證授權(quán)碼返回給業(yè)務(wù)系統(tǒng);

        F:業(yè)務(wù)系統(tǒng)將認證授權(quán)碼發(fā)送給API 網(wǎng)關(guān)認證,對授權(quán)碼有效性進行驗證;

        G:API 網(wǎng)關(guān)驗證授權(quán)碼合法后生成認證票據(jù)及刷新票據(jù),并將驗證結(jié)果及票據(jù)返回給業(yè)務(wù)系統(tǒng);

        H:業(yè)務(wù)系統(tǒng)獲得驗證結(jié)果和票據(jù)后認證完成,將請求資源、認證票據(jù)和刷新票據(jù)返回給瀏覽器客戶端。

        3.3 資源鑒權(quán)

        由于API 網(wǎng)關(guān)部署存在兩種模式,因此資源訪問鑒權(quán)也存在兩種方式。

        3.3.1 斷路式部署模式鑒權(quán)

        斷路部署模式下,前端發(fā)起業(yè)務(wù)請求時需帶上認證時返回的token 票據(jù)。API 網(wǎng)關(guān)接收請求后,先對token 合法性做驗證,驗證過程需要解析出對應(yīng)的終端用戶身份信息。驗證成功后,基于該用戶信息與需要訪問的資源進行訪問授權(quán)判斷,判斷完成后基于資源URI 進行路由轉(zhuǎn)發(fā),將用戶信息和資源請求轉(zhuǎn)發(fā)給最終的業(yè)務(wù)系統(tǒng)。

        3.3.2 旁路式部署模式鑒權(quán)

        旁路式部署模式下,前端發(fā)起資源請求首先到達業(yè)務(wù)系統(tǒng)。業(yè)務(wù)系統(tǒng)需要向API 網(wǎng)關(guān)驗證請求中token 票據(jù)的合法性,API 網(wǎng)關(guān)將驗證結(jié)果和票據(jù)解析出來的用戶信息一并返回給業(yè)務(wù)系統(tǒng)。業(yè)務(wù)系統(tǒng)基于訪問資源和用戶信息,向API 網(wǎng)關(guān)發(fā)起資源訪問鑒權(quán),鑒權(quán)成功后再調(diào)用響應(yīng)的業(yè)務(wù)處理模塊向前端返回資源信息。

        4 結(jié)語

        本系統(tǒng)集成方案解決了前后端分離模式下多個業(yè)務(wù)系統(tǒng)集成部署時需要解決的各種問題,包括前端的頁面統(tǒng)一框架、頁面互相調(diào)用、頁面鑒權(quán)處理等,以及后端服務(wù)的用戶身份單點登錄認證、資源訪問權(quán)限檢測等。采用本方案后,業(yè)務(wù)系統(tǒng)能專注于用戶業(yè)務(wù)開發(fā),集成部署簡單方便且節(jié)約了成本,適用于前后端分離模式下各種語言和框架開發(fā)的WEB 系統(tǒng)。

        猜你喜歡
        鑒權(quán)票據(jù)網(wǎng)關(guān)
        基于改進RPS技術(shù)的IPSEC VPN網(wǎng)關(guān)設(shè)計
        LTE Small Cell網(wǎng)關(guān)及虛擬網(wǎng)關(guān)技術(shù)研究
        移動通信(2015年18期)2015-08-24 07:45:08
        移動網(wǎng)絡(luò)用戶頻繁鑒權(quán)問題的優(yōu)化方案探討
        移動通信(2015年2期)2015-04-13 04:14:26
        應(yīng)對氣候變化需要打通“網(wǎng)關(guān)”
        太陽能(2015年7期)2015-04-12 06:49:50
        基于小型核心網(wǎng)的LTE鑒權(quán)的一種新實現(xiàn)
        一種實時高效的伺服控制網(wǎng)關(guān)設(shè)計
        電信增值業(yè)務(wù)運營中的認證鑒權(quán)控制方案研究
        基于安全機制的SQN同步的研究和實現(xiàn)
        電子測試(2010年3期)2010-11-05 06:42:40
        人妻人妻少妇在线系列| 精品免费久久久久久久| 亚洲欧洲偷自拍图片区| 久久精品性无码一区二区爱爱| 人妻无码aⅴ中文系列久久免费| 亚洲一码二码在线观看| 亚洲精品久久区二区三区蜜桃臀| 精品无码国产自产拍在线观看| 在线永久看片免费的视频| 中国女人a毛片免费全部播放| 侵犯了美丽丰满人妻中文字幕 | 99久热在线精品视频观看| 伊人激情av一区二区三区| 99热成人精品热久久66| 熟女人妻一区二区在线观看| 男女搞基视频免费网站| 国产成人亚洲精品无码青| 久久人人爽天天玩人人妻精品| 亚洲国产精品久久久性色av| 国产农村妇女毛片精品久久麻豆| 天天做天天爱夜夜爽女人爽| 波多野结衣一区二区三区高清 | 精品一区二区三区影片| 91精品国产九色综合久久香蕉| 亚洲av色香蕉一区二区三区老师| 色妞色综合久久夜夜| 日韩一区二区三区中文字幕| 中文字幕一区二区三区四区久久| av影院在线免费观看不卡| 黄瓜视频在线观看| 青青国产成人久久91| 日本女优五十路中文字幕| 婷婷色香五月综合缴缴情 | 久久99免费精品国产| 在线观看老湿视频福利| 九九久久精品无码专区| 亚洲黄色尤物视频| 久久精品亚洲热综合一本色婷婷| 欧美性猛交xxxx免费看蜜桃| 国产一区日韩二区欧美三区| 日本岛国一区二区三区|