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

基于RBAC模型的前后端分離系統設計與實現

2024-04-29 00:00:00陳海鋒丘美玲
科技創新與應用 2024年4期

摘" 要:權限管理是現代信息管理系統核心功能之一,能夠讓用戶可以安全訪問系統數據,其中基于角色的訪問控制模型是常用的一種權限管理模型,其優點是能夠靈活地處理角色與權限之間的變化問題,為復雜的權限管理問題提供便利性。另一方面前后端分離技術能夠很好地解決前端頁面開發和后端服務器功能開發解耦的問題,讓分工雙方更加注重各自面對的業務問題,減少對開發人員技術門檻的要求,從而大大提高了開發效率。因此采用前后端分離技術實現通用的基于角色的訪問控制系統具有一定的實用價值。

關鍵詞:基于角色的訪問控制模型;前后端分離;訪問控制;系統設計;數據庫

中圖分類號:TP32" " " " 文獻標志碼:A" " " " " 文章編號:2095-2945(2024)04-0102-05

Abstract: Permission management is one of the core functionalities in modern information management systems, allowing users to securely access system data. The role-based access control (RBAC) model is a commonly used approach for managing permissions. Its advantage lies in its flexibility to handle changes in roles and permissions, providing convenience for dealing with complex permission management scenarios. On the other hand, the front-end and front-end separation technology can well solve the problem of decoupling front-end page development and back-end server function development, so that both sides of the division of labor pay more attention to the business problems they face and reduce the technical threshold requirements for developers. As a result, the development efficiency is greatly improved. Therefore, the use of front-end separation technology to achieve a general role-based access control system has a certain practical value.

Keywords: role-based access control (RBAC) model; front-end and back-end separation; access control; system design; database

隨著互聯網的發展,各行各業都在不斷加強信息化建設。在信息管理系統中,權限控制是系統安全的重要組成部分之一,有效的權限控制是保護計算機系統和網絡免受未經授權訪問和數據泄露的關鍵要素[1]。通過限制訪問權限,可以降低遭受惡意攻擊或誤操作造成的風險,確保系統數據的完整性、可用性和保密性。隨著企業的不斷發展,權限管理的需要越來越復雜化,因而誕生出許多訪問控制模型去解決這個問題,其中基于角色的訪問控制(Role Base Access Control, RBAC)模型是常用的一種權限管理模型[2]。由于其通過角色分離了用戶和權限的邏輯,減少了權限管理的使用難度,常被用于各種企業單位中[3-4]。隨著開發技術的發展,企業在技術升級上由傳統的后端渲染技術的開發變為前后端分離技術的開發,而在升級過程中,企業實現同樣的權限管理功能上還是原來的保護頁面資源,而不是保護接口資源,即用戶在訪問頁面的操作和原來系統一樣,但是通過接口可以訪問到頁面看不到的資源,從而導致數據安全性的問題。因此針對前后端分離技術設計了基于RBAC的通用權限管理系統。

1" 基于角色的訪問控制模型

1.1" RBAC模型概述

RBAC模型的核心是用戶(user)、角色(role)和權限(permission)[5-6]。如圖1所示,用戶表示在系統里面注冊,用于訪問系統資源的使用者,可以擁有不同的角色和權限;角色表示一組相同類型的用戶,同一個角色的用戶擁有相同的權限集合,系統中常見角色有超級管理員、管理員和普通用戶等;權限是用于為了訪問特定的資源,授予用戶或角色的操作權限。在RBAC模型里面,通過角色把用戶和權限進行隔離,使得系統可以根據需要給用戶指派不同的角色,而角色通過調整權限來實現對不同資源的訪問控制[7]。由于具有授權靈活、易于管理等優點,能夠有效降低有不同管理要求企業的管理成本,因而得到廣泛的應用[8-9]。

1.2" 傳統RBAC實現模型

傳統的RBAC模型的實現適用于傳統的Web應用程序,也就是基于模板引擎的后端渲染技術,所以實現的關鍵是使用會話(Session)[10]。如圖2所示,用戶和角色的相關信息會存儲在會話中,在這種模型里面,用戶在登錄后會被系統分配一個會話,并在整個會話期間保持活動狀態。在會話中,系統通過角色獲取對應的資源操作權限,頁面資源的訪問權限會一直持續到會話失效。下面是基于會話的RBAC的一般工作流程。①用戶登錄:當用戶成功登錄系統后,系統會驗證其憑據(用戶名和密碼),然后為用戶創建一個會話,并在會話中保存用戶的角色信息和權限信息;②角色授權:在登錄成功后,系統會根據用戶的角色來授予相應的權限。角色信息通常存儲在數據庫中,系統會在登錄時查詢數據庫,獲取用戶的角色信息,并將其保存在會話中;③資源訪問控制:一旦用戶登錄并被授權,系統在用戶的會話期間將使用角色信息和權限信息來控制對資源的訪問。當用戶請求訪問某個資源時,系統會檢查其會話中的角色和權限信息,然后根據預定義的訪問規則來決定是否允許訪問;④會話管理:會話管理是保持用戶會話狀態有效的關鍵部分。系統需要確保會話的安全性,防止會話劫持等攻擊。會話會在一段時間后自動過期,或者在用戶退出登錄時手動終止。需要注意的是,基于Session的RBAC主要適用于傳統的Web應用程序,其中會話通常由服務器端進行管理。然而,隨著現代Web應用的發展,越來越多的應用采用前后端分離的架構,使得傳統的基于會話身份驗證不再適應現代Web應用的需求。

1.3" 前后端分離的RBAC實現模型

使用前后端分離技術后,頁面和服務器通過接口的形式進行數據交互,這會導致設計上的一些變化。在服務器端,不再使用傳統服務器渲染頁面技術,而改用基于接口的設計,基于接口的設計一般都是無狀態的,也就是沒有了傳統的會話技術。在頁面端,不再使用傳統的模板引擎的頁面技術,而改用如Angular,React和Vue等的前端框架技術。這些框架生成的頁面不做調整的話一般都是單頁面應用SPA(single-page application),也就是頁面只加載一個html頁面,頁面變化通過JavaScript來完成。如圖3所示,單頁面應用的頁面資源都是公開的,因而資源的保護不能是頁面,而是接口。下面是基于接口的RBAC的一般工作流程。①用戶登錄:用戶提供憑據(用戶名和密碼)進行登錄。一旦驗證登錄成功,服務器端會生成一個的憑證token,token會把用戶的角色和權限等相關信息關聯起來,通過token就能查找用戶的相關信息;②token傳遞:服務器將token發送回客戶端,客戶端通過相關技術把token存儲起來,像瀏覽器里的Cookie、SessionStorage、localStorage等??蛻舳嗽诤罄m的請求中將token添加到請求信息(通常請求頭的Authorization字段)中,以便服務器端識別用戶;③token驗證:每當客戶端發起請求,服務器端將從請求中獲取token,并對其進行驗證。驗證包括檢查token是否有效、token是否在有效期內以及是否包含所需的角色和權限信息;④資源訪問控制:一旦token驗證通過,服務器將獲取其中的角色和權限信息。然后,系統將使用這些信息來控制用戶對資源的訪問。

2" 系統的設計與實現

2.1" 數據庫設計與實現

系統的數據庫設計是基于關系型數據庫。在數據庫設計中,RBAC模型可以用實體-關系圖(E-R圖)來表示。如圖4所示,為了顯示表之間的關系,圖中每張表的屬性如id、名稱、編碼等信息被省略。其中user表和role表是原有RBAC基礎功能表,user表用于記錄用戶信息;role表用于記錄已經確定的角色(像超級管理員、管理員、普通用戶等),這些權限信息的控制已經硬編碼到代碼中,不能實時進行調整。user表和role表是多對多的關系,和使用這2張表可以復用已有的登錄校驗和簡單權限控制功能;基于接口前后端分離的RBAC核心功能擴展了相關的3張表,staff表對應可以靈活調整角色的用戶,其是user表一對一的擴展關系;staff_role表對應staff角色,staff表和staff_role表是多對多的關系,可以根據需要實時進行調整;api_info表用于精細控制接口權限,用于記錄接口api信息。staff_role表和api_info表是多對多的關系,1個角色可以調用多個api,1個api也可以被多個角色調用。另外2張表是輔助應用而設計的,organization表用于組織用戶的部門組織,尤其在企業每個人員都會屬于某個部門,使用organization表方便查找satff表用戶,以及操作多個用戶時可以使用以organization為單位進行統一批量操作,簡化了單獨操作每一個用戶的麻煩,organization表和staff表是多對多關系,1個部門可以用于多個員工,1個員工可以屬于多個部門;navigation表主要用于控制前端頁面菜單欄和操作界面的顯示,用戶在使用頁面的時候對沒權限操作的頁面或者沒有權限操作的按鈕是不關心的,因此需要把沒權限操作的頁面隱藏起來,簡化頁面,優化用戶體驗。navigation表和staff_role表是多對多關系,1個頁面可以被多個角色訪問,1個角色可以訪問多個頁面;navigation表和api_info表是多對多關系,1個頁面可以有多個操作調用api,1個api調用可以被多個頁面進行使用。

2.2" 服務器設計與實現

服務器端使用Sping-boot框架進行接口開發,提供restful接口。數據存儲使用的是MySql數據庫,數據訪問使用的是Hibernate框架實現的JPA(Java Persistence API)接口,由于JPA封裝了關系表的映射關系,使用JPA開發能夠讓開發者更加關注于業務的實現,不用關注數據庫訪問的細節。接口使用的token是JWT(JSON Web Token),JWT的優勢在于其無狀態性和分布式特性。由于JWT包含有關用戶身份和權限的信息,服務器端不需要在后臺存儲會話信息,從而實現了無狀態性,這使得系統在分布式環境中更加靈活和易于擴展。同時,JWT是基于標準化的JSON格式,可跨平臺和語言進行交換,使得前后端分離的應用開發更加方便。下面是基于JWT的前后端分離的RBAC的一般工作流程。①用戶登錄:用戶提供憑據(用戶名和密碼)進行登錄。一旦登錄成功,服務器端生成一個JWT,并將用戶的角色和權限信息加密為JWT的負載部分;②JWT傳遞:服務器將JWT發送回客戶端,存儲在客戶端的本地存儲中??蛻舳嗽诤罄m的請求中將JWT添加到請求的頭部Authorization中,以便服務器端識別用戶;③JWT驗證:每當客戶端發起請求,服務器端將從請求頭部獲取JWT,并對其進行驗證。驗證包括檢查JWT的簽名是否有效、是否在有效期內以及是否包含所需的角色和權限信息;④資源訪問控制:一旦JW驗證通過,服務器將解碼JWT的負載部分,并獲取其中的角色和權限信息。然后,系統將使用這些信息來控制用戶對資源的訪問。核心的安全模塊使用的是spring-security模塊,spring-security提供了基礎的RBAC功能,但是其中角色這一塊需要提前定義好,不符合企業靈活添加修改用戶的角色權限需求,因此需要在原有的基礎上補充一個新的角色模塊。用戶在通過接口使用資源時會通過2層校驗,第一層是框架基礎的角色校驗,也就是用戶登錄獲取代碼預設好的基礎權限;第二層是自定義細分角色的校驗,在用戶調用接口的時候在第一層校驗的基礎上獲取staff_role表的角色進行判斷是否擁有接口的操作權限,通過這2層校驗不僅解決前后端分離系統中沒有會話能力的RBAC問題,加強了安全性,還保留了原有的靈活權限管理功能。

2.3" 頁面設計與實現

前端頁面使用了Vue框架進行實現,Vue是一個JavaScript框架,通過Vue能夠高效地開發用戶界面。這歸功于它的兩大核心功能,一個是Vue基于標準HTML拓展出來的模板語法的聲明式渲染,使得可以使用簡單的語句來寫HTML和JavaScript之間關系的代碼;另一個是Vue的響應性功能,這讓應用狀態在其發生變化時響應式地更新HTML文檔的DOM節點。頁面的狀態管理使用的是Pinia,Pinia是Vue3提供的新狀態管理解決方案。比舊方案Vuex使用更加的簡單,Pinia沒有全局狀態樹,每個模塊都有自己的狀態。這樣的設計可以避免全局狀態的命名沖突,并且更容易進行模塊化開發。頁面的HTTP請求使用了Axios庫,Axios是一個流行的基于Promise的HTTP客戶端工具庫,用于在瀏覽器和Node.js環境中發送HTTP請求。它是一個簡單、易于使用且功能豐富的工具,可以與現代JavaScript框架和庫無縫集成,方便日后擴展到基于前端技術的應用中。頁面實現了2個核心功能:①頁面的配置,頁面配置功能可以配置用戶、角色、權限、接口、菜單和組織等數據信息以及之間的關系,其中用戶、角色、權限和組織等業務數據由普通管理員負責,而接口等安全性比較高的數據由預先設定好的超級管理員負責配置。數據配置除了基本的操作增刪改查外,還加了數據導入導出功能,方便日后系統數據的復用;②動態路由,由于不同角色的用戶看到的頁面菜單會有所區別,因此需要根據用戶登錄時所擁有的權限動態的顯示頁面。系統在Vue官方路由Vue Router的基礎上進行了擴展。Vue Router可以通過URL來控制視圖之間的切換,而不需要重新加載整個頁面。用戶利用傳統Web技術進行導航,整個頁面會重新渲染,導致頁面切換時有“閃一下”的效果,而使用Vue Router導航只有變化的部分會重新渲染,從而提供更快速、流暢的用戶體驗。系統對VueRouter的2個主要功能進行了擴展。①擴展了路由映射,Vue Router允許定義不同的路由,將URL映射到對應的Vue組件,但默認情況下需要硬編碼到代碼中,也就是頁面在使用前就知道URL相應的頁面。系統利用VueRouter在生產路由信息時進行接口請求,請求用戶擁有操作權限的菜單信息,轉化為路由信息后和已有的路由進行組合,重寫入路由映射,從而實現動態路由映射;②擴展了路由守衛,可以使用路由守衛來控制路由的訪問權限,限制未經授權的用戶訪問特定頁面或執行特定操作。在每一個頁面渲染之前,路由守衛路由首位都會經過判斷,判斷是否存在token并且token是否有效,即通過token可以獲取到當前用戶信息。如果token失效,就調到登錄頁面進行登錄;否則跳到相應的操作頁面。在此基礎上,通過進一步請求用戶的權限信息,判斷用戶是否有權限操作此頁面,從而限制用戶的操作,防止用戶通過特殊手段訪問到不該訪問的頁面。

3" 結束語

本文設計了一款通用的RBAC前后端分離的系統,保持傳統RBAC的優點,能夠實現對業務系統靈活的權限管理,方便對資源的訪問控制,保障系統的數據安全,以及前后端分離的優點,即服務端開發人員只需要專注服務端技術和服務端問題,頁面開發人員只需要專注頁面技術和頁面問題,在減少開發門檻的基礎上,解決了傳統RBAC模型設計模式直接切換到前后端分離的RBAC模型導致的資源保護問題,可以有效提高系統的安全性,節約管理成本,提升開發效率。

參考文獻:

[1] 王建祥,王洪澤.基于MVC的權限管理系統設計[J].電子元器件與信息技術,2021,5(12):165-172.

[2] 夏曄.信息系統用戶權限管理分析[J].計算機產品與流通,2020(7):116.

[3] 楊晟,羅奇.基于RBAC的通用權限管理系統設計[J].科技創新與應用,2022,12(9):123-126.

[4] 白嘉萌,寇英帥,劉澤藝,等.云計算平臺基于角色的權限管理系統設計與實現[J].信息網絡安全,2020,20(1):75-82.

[5] 鞠博,邊臻.RBAC模型在訪問控制中的應用[J].福建電腦,2022,38(9):37-40.

[6] 王駿,韋文亮.基于RBAC的信息化資源共享平臺的建設與研究[J].電子測試,2021(10):70-71.

[7] 彭思喜,彭鵬.基于RBAC的B/S結構學生收費系統安全機制[J].汕頭大學學報(自然科學版),2021,36(1):12-20.

[8] 胡海濱.信息系統權限管理新方法及實現探討[J].數字通信世界,2020(4):109.

[9] 王杉文.基于SpringBoot+Shiro的權限管理實現[J].電腦編程技巧與維護,2019(9):160-161,173.

[10] 何鼎權,胡輝,嚴家成.基于RBAC的通用權限管理系統[J].電腦知識與技術,2020,16(33):97-102.

主站蜘蛛池模板: 老司机久久精品视频| 综合色婷婷| 五月综合色婷婷| 一级毛片高清| a亚洲视频| 国产精品19p| 久久国产成人精品国产成人亚洲| 小蝌蚪亚洲精品国产| a免费毛片在线播放| 久久精品亚洲专区| 国产乱子伦手机在线| 国产区免费精品视频| 2019年国产精品自拍不卡| 伊人激情综合网| 亚洲婷婷六月| 亚洲Aⅴ无码专区在线观看q| 亚洲中文字幕97久久精品少妇| 亚洲免费黄色网| 九九这里只有精品视频| 青青草a国产免费观看| 国产美女无遮挡免费视频网站| 精品91自产拍在线| 国产亚洲高清在线精品99| 国产成人免费| av一区二区无码在线| 欧美成一级| 毛片久久久| 久久婷婷五月综合色一区二区| 国产日韩欧美精品区性色| 欧美亚洲国产日韩电影在线| 亚洲成网777777国产精品| 美女国内精品自产拍在线播放| 国产91丝袜在线播放动漫 | 成人亚洲国产| 日a本亚洲中文在线观看| 国产精品网拍在线| 秋霞一区二区三区| 久久精品视频一| 国产真实乱子伦精品视手机观看| 国产一级视频久久| 永久免费精品视频| 亚洲色图欧美在线| 国产一区免费在线观看| 五月婷婷激情四射| 亚洲码一区二区三区| 亚洲天堂首页| 九九这里只有精品视频| 国产亚洲精品97AA片在线播放| 久久黄色影院| 国产成人在线小视频| 国产91蝌蚪窝| 国产视频一区二区在线观看| 精品视频一区二区三区在线播| 四虎在线观看视频高清无码| 日本国产精品| 婷婷色中文| 亚洲女同一区二区| 国产成人久久综合777777麻豆| 国产偷倩视频| 欧美亚洲第一页| 美女一区二区在线观看| 伊人久久精品无码麻豆精品| 国产久草视频| 亚洲高清无码久久久| 日韩免费中文字幕| 欧美日韩动态图| 亚洲中文在线视频| 欧美国产日本高清不卡| 久久精品人人做人人爽| 国产高潮视频在线观看| 国产粉嫩粉嫩的18在线播放91 | 啪啪永久免费av| 91成人在线免费观看| 亚洲AⅤ永久无码精品毛片| 欧美色图第一页| 日韩国产一区二区三区无码| 亚洲国产精品成人久久综合影院| 欧美午夜在线观看| 精品午夜国产福利观看| 欧美不卡视频在线观看| 67194在线午夜亚洲| 午夜视频www|