基于SpringSecurity Vue的RABAC管理系統(tǒng)的設計與實現(xiàn)_第1頁
基于SpringSecurity Vue的RABAC管理系統(tǒng)的設計與實現(xiàn)_第2頁
基于SpringSecurity Vue的RABAC管理系統(tǒng)的設計與實現(xiàn)_第3頁
基于SpringSecurity Vue的RABAC管理系統(tǒng)的設計與實現(xiàn)_第4頁
基于SpringSecurity Vue的RABAC管理系統(tǒng)的設計與實現(xiàn)_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

第4章系統(tǒng)實現(xiàn)4.1用戶登錄模塊實現(xiàn)在用戶輸入賬號和密碼并點擊“登錄”按鈕后,系統(tǒng)會依據(jù)預設的準則對所輸入的信息進行初步審核。比如,系統(tǒng)會檢查密碼的長度是否符合要求,即是否在5至25個字符之間。一旦通過初步驗證,這些登錄信息將被傳輸至后端登錄界面進行進一步處理。在后端,登錄系統(tǒng)會根據(jù)提供的賬號信息在數(shù)據(jù)庫中檢索對應的用戶資料。如果數(shù)據(jù)庫中未找到與輸入賬號相匹配的用戶數(shù)據(jù),系統(tǒng)會判斷該用戶不存在;反之,若找到相應的用戶資料,系統(tǒng)還會核對數(shù)據(jù)庫中存儲的密碼與用戶輸入的密碼是否一致。只有當兩者相符時,登錄操作才被視為成功。隨后,系統(tǒng)會將用戶的登錄信息及其所有權(quán)限信息保存在Redis中,并生成一個臨時的訪問密鑰(token)。若密碼比對不符,則提示賬號或密碼錯誤。本系統(tǒng)中所使用前后端雙重權(quán)限控制也是依托登陸模塊的設計完成初步的權(quán)限分配工作,通過將用戶與系統(tǒng)權(quán)限相互隔離,使得系統(tǒng)中用戶的認證與授權(quán)更加方便靈活,不僅有效地減少了授權(quán)認證的復雜性,還降低了權(quán)限分配出現(xiàn)錯誤的幾率。此外,加強系統(tǒng)中的安全權(quán)限控制,可以有效降低系統(tǒng)癱癱瘓、數(shù)據(jù)丟失、商業(yè)機密泄漏的風險。權(quán)限認證服務主要分為兩大部分,登陸的請求認證及訪問受限資源的請求認證,其中用戶登錄界面如圖4.1所示。圖4.1用戶登錄界面用戶登錄核心代碼如圖4.2所示。圖4.2登錄核心代碼4.2用戶管理模塊用戶管理模塊具備對用戶的頭像、用戶名、角色、郵箱、手機號等五個關鍵信息進行遍歷的功能,從而實現(xiàn)對整個系統(tǒng)用戶信息的全面管理。在該模塊中,用戶能夠按照用戶名進行模糊查詢,以便快速定位并管理特定的用戶。此外,用戶還可以對用戶角色進行管理,修改用戶的基本信息,甚至進行批量刪除操作。同時,該模塊還提供了用戶一次關閉的功能,以滿足不同場景下的用戶需求。通過這些功能,用戶管理模塊確保了系統(tǒng)用戶信息的準確性、安全性和便捷性。用戶管理界面如圖4.3所示。\o""新\o""增\o""加\o""的\o""用戶\o""界面\o""見\o""圖4.4所示。圖4.3用戶管理界面圖4.4新增用戶給用戶分配角色界面如圖4.5所示,當用戶點擊分配角色功能時,系統(tǒng)會先查詢數(shù)據(jù)庫中的所有的角色信息,遍歷出來之后供用戶勾選,可以給一個用戶同時賦予多種角色,每個角色中重復的資源不會沖突。圖4.5用戶分配角色界面修改用戶信息核心代碼如下所示。/***添加或者修改**@paramsysUser*@return*/@PostMapping("/save")@PreAuthorize("hasAuthority('system:user:add')"+"||"+"hasAuthority('system:user:edit')")publicRsave(@RequestBodySysUsersysUser){if(sysUser.getId()==null||sysUser.getId()==-1){//添加操作sysUser.setCreateTime(newDate());sysUser.setPassword(bCryptPasswordEncoder.encode(sysUser.getPassword()));sysUserService.save(sysUser);}else{//更新操作sysUser.setUpdateTime(newDate());sysUserService.updateById(sysUser);}returnR.ok();}4.3角色管理\o""角色\o""管理\o""模塊\o""是\o""一個對\o""權(quán)限\o""進行\(zhòng)o""管理\o""的\o""模塊\o"",\o""除\o""了\o""基\o""礎\o""的\o""增刪\o""、\o""修\o""改\o""、\o""查\o""等\o""功能\o""之\o""外\o"",\o""它\o""還\o""包\o""括\o""對\o""各\o""種\o""角色\o""進行\(zhòng)o""授\o""權(quán)\o""的\o""功能\o"",\o""如\o""圖\o""4.6所\o""示\o"",\o""它的\o""分配\o""權(quán)限\o""的\o""作用\o""主要\o""是\o""由\o""樹狀圖\o""來\o""勾\o""選\o""來\o""實現(xiàn)\o""的,見圖4.7。圖4.6角色管理界面圖4.7角色賦權(quán)界面控制角色狀態(tài)信息核心代碼如下所示。/***分配角色**@paramuserId當前操作用戶的id*@paramroleIds角色的id*@return*/@Transactional@PostMapping("/grantRole/{userId}")@PreAuthorize("hasAuthority('system:user:role')")publicRgrantRole(@PathVariableLonguserId,@RequestBodyLong[]roleIds){List<SysUserRole>userRoleList=newArrayList<>();Arrays.stream(roleIds).forEach(r->{SysUserRolesysUserRole=newSysUserRole();sysUserRole.setRoleId(r);sysUserRole.setUserId(userId);userRoleList.add(sysUserRole);});sysUserRoleService.remove(newQueryWrapper<SysUserRole>().eq("user_id",userId));sysUserRoleService.saveBatch(userRoleList);returnR.ok();}4.4個人信息模塊個人資料模塊是用戶最基本的功能模塊,每位用戶默認具備此特性。通過“個人信息”模塊,用戶可以查詢、修改個人信息以及修改密碼。若用戶需要更新自己的資料,只需在此界面上進行相應修改即可。圖4.8展示了個人信息界面的布局。在對密碼進行修改的過程中,\o""用戶\o""需\o""要\o""重新\o""輸入\o""原\o""始\o""的\o""密碼\o"",以\o""保\o""證\o""其不會被人\o""篡改\o""。修改密碼后的界面如圖4.9所示。圖4.8個人信息界面圖4.9修改密碼界面4.5部門管理模塊部門管理模塊主要用于管理系統(tǒng)中的部門信息,涵蓋部門名稱、部門負責人的電話和郵箱,以及部門地址等關鍵內(nèi)容。用戶在使用此模塊時,不僅能夠增加、刪除、修改和查詢部門信息,還具備對部門內(nèi)部人員進行調(diào)動的功能,包括勾選或刪除部門中的用戶。圖4.10展示了部門管理界面的布局,圖4.11呈現(xiàn)了部門增加界面的設計,而圖4.12則顯示了部門修改界面。圖4.10部門管理界面圖4.11部門添加界面圖4.12部門修改界面4.6崗位管理模塊崗位模塊是用來管理系統(tǒng)中的全部崗位信息的,其中包含了崗位的名稱、部門標識、崗位描述等信息,\o""可以\o""添加\o"",\o""修改\o"",\o""刪除\o"",\o""查詢\o""等\o""。\o""在\o""圖\o""4.13\o""中\(zhòng)o""顯\o""示\o""了崗位\o""管理\o""界面\o"",\o""4.14\o""中\(zhòng)o""顯\o""示\o""了崗位\o""增加\o""界面,崗位修改界面如4.15所示。圖4.13崗位管理界面圖4.14崗位添加界面圖4.15崗位修改界面4.7行為日志模塊日志模塊,你需要在服務器后端構(gòu)建一個全局中間件或者攔截器,該組件會在每次接收到前端請求時自動觸發(fā)并收集相關信息,主要包括的名稱:用戶名:由于涉及到用戶身份識別,確保在用戶登錄成功后將其唯一標識(如ID或用戶名)存儲在服務器端的session或token中,當接收到請求時,從這些憑證中提取出用戶名、行為發(fā)生時間:在處理請求的過程中,獲取當前服務器系統(tǒng)的時間戳,并格式化為可讀性較好的日期和時間形式記錄下來。將上述信息整合封裝成一條行為日志記錄,并持久化存儲至數(shù)據(jù)庫或者其他適合的日志存儲服務中。這樣,每條記錄就能完整地反映出某個用戶在特定時間和地點,使用何種設備和瀏覽器,對哪個接口進行了何種操作,便于后期的數(shù)據(jù)分析和問題排查。行為日志管理界面如圖4.16所示,查看行為日志的詳情界面如圖4.17所示。圖4.16行為日志管理界面圖4.17行為日志詳情界面行為日志核心代碼:@SuppressWarnings("checkstyle:IllegalThrows")@Around("pointCut()")publicObjectaround(ProceedingJoinPointpjp)throwsThrowable{//執(zhí)行被通知的方法Objectresult=ceed();//在執(zhí)行完方法后記錄日志HttpServletRequestrequest=((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();Authenticationauthentication=SecurityContextHolder.getContext().getAuthentication();Stringusername="";if(authentication!=null&&authentication.isAuthenticated()){username=(String)authentication.getPrincipal();}Stringmethod=request.getMethod();("請求方法的類型:{}",method);StringrequestURI=request.getRequestURI();("請求路徑:{}",requestURI);StringremoteAddr=request.getRemoteAddr();("ip地址:{}",remoteAddr);Stringtoken=request.getHeader("token");("tokenID:{}",token);StringbrowserInfo=BrowserUtil.getBrowserInfo(request);StringosInfo=BrowserUtil.getOsInfo(request);("瀏覽器信息:{}",browserInfo);("操作系統(tǒng):{}",osInfo);//獲取參數(shù),這是入?yún)bject[]reqArgs=pjp.getArgs();("請求的參數(shù):{}",reqArgs.toString());//獲得方法簽名MethodSignaturemethodSignature=(MethodSignature)pjp.getSignature();//類名.方法名StringmethodName=methodSignature.getDeclaringType().getName()+"."+methodSignature.getName();("方法名:{}",methodName);Objecttarget=pjp.getTarget();ObjectaThis=pjp.getThis();target.getClass().getName();StringtargetName=target.getClass().getSimpleName();StringthisName=aThis.getClass().getSimpleName();("目標操作:{}",targetName);("代理對象:{}",thisName);LongstartTime=System.currentTimeMillis();//這是出參Gsongson=newGson();Stringresp=gson.toJson(result);LongendTime=System.currentTimeMillis();("{},response:{},costTime:{}",methodName,resp,(endTime-startTime));UserBehaviorLoguserBehaviorLog=newUserBehaviorLog();StringBLACK_LIST[]={"/actionLog/list","/log/login/list"};if(!Arrays.asList(BLACK_LIST).contains(requestURI)){userBehaviorLogService.save(userBehaviorLog);}returnresult;}4.8登錄日志模塊在后端服務器設計一個專門用于處理和記錄用戶登錄事件的邏輯模塊:登錄用戶名:當用戶提交登錄請求時,從請求體中獲取并驗證用戶輸入的用戶名,確保正確無誤后將其記錄。登錄時間:在用戶登錄成功的瞬間,獲取服務器的當前時間戳,并格式化為易于閱讀的時間格式,作為登錄時間記錄下來。登出時間:若用戶執(zhí)行了登出操作,同樣記錄下此時的時間戳。如果沒有登出操作,則此字段可能為空或者記錄為“未登出”。如果驗證通過則記錄為“成功”,否則記錄為“失敗”。登錄失敗原因:對于登錄失敗的情況,需要明確記錄失敗的具體原因,可能是密碼錯誤、賬戶不存在或其他異常情況,將相應的錯誤信息一同記錄。瀏覽器類型:通過解析登錄請求的User-Agent頭部信息,確定用戶使用的瀏覽器類型。請求方法:登錄請求通常采用POST方法,記錄下具體的HTTP請求方法。將以上所有信息整合成一條登錄日志記錄,并將其持久化保存到數(shù)據(jù)庫或其他日志存儲服務中。前端界面可以通過接口調(diào)用獲取這些記錄信息并展示給管理員,以便于監(jiān)控和審計用戶登錄行為,及時發(fā)現(xiàn)并處理潛在的安全風險及異常登錄情況。登錄日志管理界面如圖4.18所示。圖4.18行為日志詳情界面4.9本章小結(jié)本章通過文字加圖片的方式,生動形象的對系統(tǒng)實現(xiàn)情況進行闡述。講解了每個模塊界面的功能和內(nèi)容,并且展示了系統(tǒng)的核心代碼。至此,系統(tǒng)所有功能模塊的開發(fā)已經(jīng)完成。第5章系統(tǒng)測試5.1測試目的無論是在企業(yè)真實的軟件開發(fā)過程中,還是在學校實驗的模擬軟件開發(fā)過程中,軟件測試都是極其重要且不可忽視的一環(huán)。通過對設計開發(fā)的軟件進行完備的測試,不僅可以尋找出軟件開發(fā)過程中忽視的缺陷,也在很大程度上影響著軟件交付的質(zhì)量,甚至可以在測試的過程中發(fā)現(xiàn)軟件是否能滿足目標用戶的實際需要。因此,軟件測試是保障軟件質(zhì)量(軟件的正確性及完整性)的重要手段。在ERP系統(tǒng)開發(fā)完成后,需要針對目標用戶、功能設計完備的測試用例,并使用專業(yè)工具完成完整的功能測試,減少系統(tǒng)的Bug,提高用戶的使用體驗。5.2測試過程與結(jié)果該系統(tǒng)采用了前后端分離的體系結(jié)構(gòu),其中前端使用VSCode工具進行故障排查,后端則通過IDEA完成調(diào)試工作。系統(tǒng)登錄模塊測試用例如表5.1所示,對使用不同賬號以及故意輸入錯誤賬號或者密碼是否可以登錄系統(tǒng)進行測試。表5.1登陸模塊測試用例編號測試描述測試輸入預期輸出測試結(jié)果01測試正確的賬號、密碼是否可以登陸成功輸入正確的賬號、正確的密碼登陸成功測試通過02測試錯誤的賬號、密碼是否可以登陸成功輸入錯誤的賬號、密碼登陸失敗并提示用戶不存在測試通過03測試錯誤的賬號、密碼是否可以登陸成功輸入正確的賬號、錯誤的密碼登陸失敗并提示密碼錯誤測試通過用戶管理模塊測試用例如表5.2所示,對用戶管理模塊功能進行測試。表5.2用戶管理模塊測試用例編號測試描述測試輸入預期輸出測試結(jié)果01添加用戶輸入用戶信息,包括用戶名、角色等添加用戶成功測試通過02編輯用戶選擇已存在用戶進行編輯,修改用戶信息編輯用戶成功測試通過03刪除用戶選擇已存在用戶進行刪除刪除用戶成功測試通過04更改用戶角色選擇已存在用戶進行角色更改更改用戶角色成功測試通過使用系統(tǒng)管理員賬號,登錄系統(tǒng),進入系統(tǒng)的角色管理模塊,測試了角色管理模塊的各種功能,如表5.3所示。表5.3角色管理模塊測試用例編號測試描述測試輸入預期輸出測試結(jié)果01添加角色輸入角色信息,包括角色名稱、權(quán)限等添加角色成功測試通過02編輯角色選擇已存在角色進行編輯,修改角色信息編輯角色成功測試通過03刪除角色選擇已存在角色進行刪除刪除角色成功測試通過04權(quán)限管理對已存在角色進行權(quán)限管理,修改權(quán)限權(quán)限修改成功測試通過使用普通用戶身份,登錄系統(tǒng)的個人信息模塊,對個人信息模塊的查看個人信息、編輯個人信息和修改賬號密碼功能進行測試,測試結(jié)果如表5.4所示。表5.4個人中心模塊測試用例編號測試描述測試輸入預期輸出測試結(jié)果01查看個人信息進入個人中心頁面顯示個人信息測試通過02編輯個人信息修改個人信息,如姓名、聯(lián)系方式等編輯成功提示測試通過03修改密碼輸入原密碼、新密碼密碼修改成功提示測試通過使用系統(tǒng)管理員賬號,登錄系統(tǒng),進入系統(tǒng)的部門管理模塊,測試了部門管理模塊的各種功能,如表5.5所示。表5.5部門管理模塊測試用例編號測試描述測試輸入預期輸出測試結(jié)果01添加部門輸入部門名稱,部門編號,部門狀態(tài)等添加部門成功測試通過02編輯部門信息修改部門名稱,修改部門編號、部門狀態(tài)等編輯部門成功測試通過03刪除部門選擇已存在部門進行刪除刪除部門成功測試通過使用系統(tǒng)管理員賬號,登錄系統(tǒng),進入系統(tǒng)的崗位管理模塊,測試了崗位管理模塊的各種功能,如表5.6所示。表5.6崗位管理模塊測試用例編號測試描述測試輸入預期輸出測試結(jié)果01添加崗位輸入崗位名稱,崗位編號,所屬部門等添加崗位成功測試通過02編輯崗位信息修改崗位名稱,修改崗位編號,修改所屬部門等編輯崗位成功測試通過03刪除崗位選擇已存在崗位進行刪除刪除崗位成功測試通過5.3本章小結(jié)經(jīng)過嚴格的比對,所有測試結(jié)果均與預期結(jié)果保持一致,從而確保了各功能模塊的正常運作與性能穩(wěn)定。經(jīng)過多次測試,基于SpringSecurity+Vue的RBAC管理系統(tǒng)沒有發(fā)現(xiàn)明顯問題,能夠保障運行的正確性并滿足實際用戶的需要。第6章總結(jié)與展望目前,我們已基本完成了基于SpringSecurity和Vue技術(shù)的RBAC管理系統(tǒng)的設計與實現(xiàn)工作。在系統(tǒng)設計階段,我們深入研究了大量文獻資料,對系統(tǒng)進行了全面的分析。之后,我們進行了系統(tǒng)的需求分析與可行性分析,確保對系統(tǒng)需求有清晰的認識。在此基礎上,我們精心設計了系統(tǒng)的體系結(jié)構(gòu)、功能結(jié)構(gòu)以及數(shù)據(jù)庫等關鍵組成部分。在實現(xiàn)階段,該系統(tǒng)充分利用了SpringSecurity提供的強大身份驗證與授權(quán)機制,并結(jié)合Vue框架構(gòu)建了一個用戶友好、操作高效的前端界面。這一結(jié)合使得系統(tǒng)能夠?qū)崿F(xiàn)靈活且安全的權(quán)限管理。為了高效管理和存儲系統(tǒng)中的數(shù)據(jù),我們特別采取了MySQL和Redis數(shù)據(jù)庫結(jié)合的方式。通過MySQL數(shù)據(jù)庫,我們確保了數(shù)據(jù)的持久化和結(jié)構(gòu)化存儲,滿足了系統(tǒng)對數(shù)據(jù)完整性和一致性的高要求。而Redis數(shù)據(jù)庫則以其出色的讀寫性能,為系統(tǒng)提供了高速緩存和實時數(shù)據(jù)處理的能力,進一步提升了系統(tǒng)的響應速度和數(shù)據(jù)處理效率。系統(tǒng)通過RBAC的角色劃分,實現(xiàn)了對系統(tǒng)各個功能模塊的權(quán)限控制,確保了系統(tǒng)的身份驗證和授權(quán)機制的穩(wěn)健性。隨著技術(shù)的不斷發(fā)展,未來可以考慮引入更多的前沿技術(shù),以提升系統(tǒng)的安全性和性能。并且,考慮引入統(tǒng)一身份認證系統(tǒng),使得用戶能夠在不同的應用中實現(xiàn)單點登錄,提高用戶體驗。通過不斷地優(yōu)化和升級,基于SpringSecurity和Vue的RBAC管理系統(tǒng)將能夠更好地適應不斷變化的業(yè)務需求和安全挑戰(zhàn),為用戶提供更加可靠、高效、安全的權(quán)限管理服務。參考文獻德,韋統(tǒng)邊,吳江波等.基于RBAC的汽車企業(yè)通用權(quán)限管理系統(tǒng)設計[J].汽車電器,2023(07):48-50+54.楊晟,羅奇.基于RBAC的通用權(quán)限管理系統(tǒng)設計[J].科技創(chuàng)新與應用,2022,12(09):123-126.何鼎權(quán),胡輝,嚴家成.基于RBAC的通用權(quán)限管理系統(tǒng)[J]

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論