




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實項操目JavaEE框架應(yīng)用開發(fā)(SpringBoot+VueJS)工作單元五實現(xiàn)登錄認證和鑒權(quán)職業(yè)能力本工作單元主要實現(xiàn)用戶的登錄認證和鑒權(quán)功能,最終希望學生達成如下職業(yè)能力目標:掌握使用SpringSecurity實現(xiàn)登錄認證的流程掌握使用SpringSecurity鑒別用戶是否具有控制訪問權(quán)限掌握使用JWT實現(xiàn)無狀態(tài)、分布式的Web應(yīng)用授權(quán)任務(wù)情景企業(yè)應(yīng)用系統(tǒng)對安全性有較高的要求,因此業(yè)務(wù)系統(tǒng)必備的安全性功能往往就是對用戶的認證和鑒權(quán)。認證:指驗證某個用戶是否為系統(tǒng)中的合法主體,也就是說用戶能否訪問該系統(tǒng)。鑒權(quán):指驗證某個用戶是否有權(quán)限執(zhí)行某個操作,如果未授權(quán)則不能訪問該系統(tǒng)。任務(wù)情景登錄認證與鑒權(quán)的過程中將面臨下面三個問題:如何配置管理系統(tǒng)的權(quán)限?如何實現(xiàn)用戶的登錄認證以及授權(quán)功能?如何實現(xiàn)未授權(quán)的訪問控制,即系統(tǒng)的鑒權(quán)功能?本工作單元的具體任務(wù)實現(xiàn)基于SpringSecurity框架的權(quán)限控制功能。實現(xiàn)基于JWT的登錄認證功能。實現(xiàn)基于JWT的訪問鑒權(quán)功能。用戶登錄認證通過后獲取登錄用戶授權(quán)信息的接口功能。SpringSecurity框架為解決對用戶的認證和鑒權(quán)問題,可引用SpringSecurity框架作為權(quán)限管理系統(tǒng)的安全訪問控制解決方案。SpringSecurity框架為基于Spring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問控制功能,其在進行用戶認證以及授予權(quán)限的時候,通過各種各樣的攔截器來控制權(quán)限的訪問,從而實現(xiàn)安全控制,同時減少了為系統(tǒng)安全而編寫大量重復(fù)代碼的工作CHAPTERFIVE任務(wù)1實現(xiàn)基于SpringSecurity的權(quán)限控制功能任務(wù)分析在權(quán)限管理系統(tǒng)中,應(yīng)用系統(tǒng)需要對資源進行配置,決定了哪些資源無需授權(quán)可以直接訪問,哪些資源需要授權(quán)才可以訪問。本任務(wù)結(jié)合SpringSecurity框架的WebSecurityConfigurerAdapter配置類,來配置資源訪問權(quán)限和驗證用戶權(quán)限信息,實現(xiàn)系統(tǒng)的權(quán)限控制功能任務(wù)實施步驟1.導入SpringSecurity依賴步驟2.使用SpringSecurity配置訪問權(quán)限步驟3.創(chuàng)建認證失敗處理類步驟4.實現(xiàn)獲取用戶和權(quán)限信息的業(yè)務(wù)層代碼步驟5.實現(xiàn)獲取用戶信息的業(yè)務(wù)層代碼步驟6.實現(xiàn)獲取權(quán)限信息的業(yè)務(wù)層代碼步驟7.運行調(diào)試步驟1導入SpringSecurity依賴在pom.xml中引入SpringSecurity和fastjson的依賴。步驟2使用SpringSecurity配置訪問權(quán)限在包'edu.friday.config'下創(chuàng)建一個繼承WebSecurityConfigurerAdapter抽象類的SecurityConfig類;重寫configure(HttpSecurityhttp)方法,用來配置資源訪問權(quán)限和驗證用戶權(quán)限信息。步驟3創(chuàng)建認證失敗處理類AuthenticationEntryPointImpl用來解決匿名用戶訪問無權(quán)限資源時的異常,該類必須要實現(xiàn)AuthenticationEntryPoint接口,該接口的作用是當用戶請求了一個受保護的系統(tǒng)資源時,用戶沒有通過認證則拋出異常,AuthenticationEntryPoint.Commence()方法就會被調(diào)用返回認證失敗的消息。步驟4實現(xiàn)獲取用戶和權(quán)限信息的業(yè)務(wù)層代碼創(chuàng)建UserDetailsServiceImpl類,并實現(xiàn)UserDetailsService接口,該接口的loadUserByUsername()方法用來將從數(shù)據(jù)庫中獲取到的用戶、權(quán)限和菜單等信息封裝到SpringSecurity框架提供的UserDetails接口中,這里使用LoginUser繼承UserDetails接口來保存獲取的用戶、權(quán)限等信息。步驟5實現(xiàn)獲取用戶信息的業(yè)務(wù)層代碼在SysUserService接口增加步驟4中調(diào)用的selectUserList抽象方法。在SysUserServiceImpl中增加對應(yīng)的實現(xiàn)方法。步驟6實現(xiàn)獲取權(quán)限信息的業(yè)務(wù)層代碼增加SysPermissionService類,用于獲取角色和菜單權(quán)限信息;在SysRoleService中增加selectRolePermissionByUserId方法,用于根據(jù)用戶ID查詢角色權(quán)限信息;在SysMenuService中增加selectMenuPermsByUserId方法,用于根據(jù)用戶ID查詢菜單權(quán)限;增加SysMenuRepository接口的selectMenuPermsByUserId方法,用于根據(jù)用戶ID查詢菜單權(quán)限數(shù)據(jù)。步驟7運行調(diào)試使用Postman訪問下面URL地址http://localhost:8080/system/user/list因為引入了SpringSecurity進行權(quán)限管理,所以無法在未登錄授權(quán)的情況下訪問資源。在下面兩個任務(wù)分別實現(xiàn)登錄認證和鑒權(quán)功能后,在授權(quán)的情況下訪問資源才能獲取資源數(shù)據(jù)。任務(wù)評價感謝觀看~實項操目JavaEE框架應(yīng)用開發(fā)(SpringBoot+VueJS)工作單元五實現(xiàn)登錄認證和鑒權(quán)CHAPTERFIVE任務(wù)2實現(xiàn)基于JWT的登錄認證功能任務(wù)分析通過本任務(wù),完成登錄驗證的接口功能。對于開發(fā)人員編寫的接口輸入和返回值,業(yè)務(wù)邏輯分為3個核心步驟:1.AuthenticationManager的authenticate方法進行用戶驗證并返回用戶信息;2.使用Redis工具類將用戶信息存儲到Redis數(shù)據(jù)庫中;3.將保存用戶的鍵值以JSONWebToken(縮寫JWT)的數(shù)據(jù)格式返回前端。任務(wù)實施步驟1.導入JWT、Redis和連接池的依賴步驟2.配置Redis連接和Token信息步驟3.編寫登錄接口的控制層代碼步驟4.編寫登錄接口的業(yè)務(wù)層代碼步驟5.編寫驗證異常代碼步驟6.編寫網(wǎng)絡(luò)令牌Token的業(yè)務(wù)層代碼步驟7.編寫RedisCache工具類代碼步驟8.運行調(diào)試步驟1導入JWT、Redis和連接池的依賴在pom.xml中導入JWT、Redis和連接池的依賴。步驟2配置Redis連接和Token信息修改resources下的application.yml文件,添加如下配置參數(shù)用于配置Redis連接和配置Token令牌的密鑰和有效期信息。步驟3編寫登錄接口的控制層代碼新增SysLoginController類的login方法用于實現(xiàn)登錄功能的API接口。步驟4編寫登錄接口的業(yè)務(wù)層代碼在包'mon.security.service'下新增SysLoginService類用于對登錄用戶的驗證,將username和password封裝到UsernamePasswordAuthenticationToken對象中,然后將該實例給AuthenticationManager進行驗證,只要返回Authentication對象就代表用戶通過驗證了。步驟5編寫驗證異常代碼在包“mon.exception.user”下新增UserPasswordNotMatchException類和UserException父類,用于用戶密碼不正確或不符合規(guī)范異常的情況。步驟6編寫網(wǎng)絡(luò)令牌Token的業(yè)務(wù)層代碼在包“mon.security.service”下新增TokenService類以及相關(guān)的方法,用于創(chuàng)建JSON網(wǎng)絡(luò)令牌并將其存儲在Redis數(shù)據(jù)庫中。步驟7編寫RedisCache工具類代碼1)在包“edu.friday.utils”下增加RedisCache工具類,用于在Redis數(shù)據(jù)庫將網(wǎng)絡(luò)令牌Token進行存儲和讀取操作;2)在包“edu.friday.config”下增加RedisConfig類,用于配置Redis的序列化和反序列化方式;3)在包“edu.friday.config”下增加FastJson2JsonRedisSerializer類,用于使用FastJson來序列化和反序列化Redis的值。步驟7運行調(diào)試Postman下測試登錄接口選擇“POST”模式;輸入URL地址http://localhost:8080/login;Params輸入傳輸參數(shù)username=“admin”和password=“123456”;單擊“Send”按鈕,返回值中包含認證成功后的Token值。任務(wù)評價感謝觀看~實項操目JavaEE框架應(yīng)用開發(fā)(SpringBoot+VueJS)工作單元五實現(xiàn)登錄認證和鑒權(quán)CHAPTERFIVE任務(wù)3實現(xiàn)基于JWT的訪問鑒權(quán)功能任務(wù)分析用戶登錄成功后,系統(tǒng)返回生成的Token值,以后用戶每次請求都會在header中加入“Authorization:token值”,后臺系統(tǒng)會使用過濾器攔截請求,驗證Token值,如果通過驗證則返回請求的資源,否則就返回無權(quán)訪問的錯誤頁。基于JWT的用戶認證流程任務(wù)實施步驟1.創(chuàng)建驗證Token的過濾器步驟2.編寫網(wǎng)絡(luò)令牌Token的業(yè)務(wù)層代碼步驟3.編寫安全服務(wù)工具類步驟4.SecurityConfig類中配置過濾器步驟5.運行調(diào)試步驟1創(chuàng)建驗證Token的過濾器新增JwtAuthenticationTokenFilter過濾器,用于驗證客戶端攜帶Token的有效性;JwtAuthenticationTokenFilter需繼承OncePerRequestFilter,確保在一次請求只通過一次filter,而不需要重復(fù)執(zhí)行;通過調(diào)用SecurityContextHolder.getContext().setAuthentication方法將AuthenticationManager返回的Authentication對象賦予給當前的SecurityContext,建立安全上下文。步驟2編寫網(wǎng)絡(luò)令牌Token的業(yè)務(wù)層代碼在TokenService類下新增getLoginUser和verifyToken方法,分別用于從客戶端的Token中獲取用戶信息和驗證令牌的有效性。步驟3編寫安全服務(wù)工具類在包“edu.friday.utils.security”下新增SecurityUtils類,用于安全服務(wù)工具類。步驟4SecurityConfig類中配置過濾器在SecurityConfig類中配置新增的JwtAuthenticationTokenFilter類,使用httpSecurity.addFilterBefore方法將這個新增的過濾器增加到鏈路中。步驟5運行調(diào)試Postman下獲取認證成功后的Token值選擇“POST”模式;輸入URL地址http://localhost:8080/login;Params輸入傳輸參數(shù)username=“admin”和password=“123456”;單擊“Send”按鈕,返回值中包含認證成功后的Token值。步驟5運行調(diào)試Postman驗證登錄認證之后,訪問授權(quán)資源選擇“GET”模式;輸入URL地址:http://localhost:8080/system/user/list;在Headers下設(shè)置Authorization的值為上一步返回的Token的值;單擊“Send”按鈕,登錄認證之后,可以訪問授權(quán)的資源。任務(wù)評價感謝觀看~實項操目JavaEE框架應(yīng)用開發(fā)(SpringBoot+VueJS)工作單元五實現(xiàn)登錄認證和鑒權(quán)CHAPTERFIVE任務(wù)4實現(xiàn)獲取登錄用戶授權(quán)信息接口功能任務(wù)分析通過本任務(wù),完成獲取登錄用戶授權(quán)信息和獲取菜單路由信息的接口功能。任務(wù)實施步驟1.編寫登錄接口的控制層代碼步驟2.運行調(diào)試步驟1編寫登錄接口的控制層代碼在SysLoginController類中增加getInfo方法,用于獲取登錄用戶授權(quán)信息。步驟運行調(diào)試Postman下獲取認證成功后的Token值選擇“POST”模式;輸入URL地址http://localhost:8080/login;Params輸入傳輸參數(shù)username=“admin”和password=“123456”;單擊“Send”按鈕,返回值中包含認證成功后的Token值。步驟運行調(diào)試Postman驗證登錄認證之后,訪問授權(quán)資源選擇“GET”模式;輸入URL地址:http://localhost:8080/getInfo;在Headers下設(shè)置Authorization的值為上一步返回的Token的值;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中考數(shù)學知識點梳理與難題突破
- 2025-2030中國燃氣行業(yè)數(shù)字化轉(zhuǎn)型趨勢分析報告
- 2025-2030中國燃氣行業(yè)客戶服務(wù)創(chuàng)新與滿意度提升研究報告
- 2025-2030中國燃氣工程EPC總承包模式市場滲透率與風險控制報告
- 超市設(shè)備操作與維護安全規(guī)范
- gcp考試題庫及答案
- 人教版六年級英語期中復(fù)習測試題
- 學生學習習慣養(yǎng)成測試題庫大全
- 工程質(zhì)量管理崗位職責說明
- 影視版權(quán)合作協(xié)議全解析
- 5.申恒梅-環(huán)境空氣自動監(jiān)測數(shù)據(jù)審核、評價及異常數(shù)據(jù)判定
- 接收預(yù)備黨員表決票(樣式)
- 特立帕肽治療骨質(zhì)疏松性骨折中國專家共識(2024版)解讀
- 電費保證金協(xié)議書范文范本
- 代謝相關(guān)(非酒精性)脂肪性肝病防治指南2024年版解讀課件2
- 《精神病學》考試題庫完整
- 自鎖現(xiàn)象與摩擦角
- 十二青少年健康危險行為
- 謝孟媛中級文法講義
- 中國少年先鋒隊入隊申請書 帶拼音
- 動火證模板完整版
評論
0/150
提交評論