您好,登錄后才能下訂單哦!
這篇文章主要講解了“SpringCloud的spring-security怎么配置”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“SpringCloud的spring-security怎么配置”吧!
一、簡介
Web應(yīng)用的安全管理,主要包括兩個方面的內(nèi)容:身份認證、用戶授權(quán),此處使用spring-cloud-security來說明。
二、依賴管理
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-security</artifactId> </dependency> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity4</artifactId> </dependency> |
三、安全策略配置
Spring Security已經(jīng)大體實現(xiàn)了,我們這里只是需要一些配置與引用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
|
說明:
loginPage:設(shè)置一個實驗自定義的登錄URI
loginSuccessHandler:設(shè)置自定義的登錄處理器
permitAll:是允許訪問
accessDeniedPage:配置拒絕訪問的提示URI
antMatchers:對URI的配置
了解springcloud架構(gòu)可以加求求:三五三六二四七二五九
假設(shè)我要管理員才可以訪問admin文件夾下的內(nèi)容,如:.antMatchers("/admin/**").hasRole("ROLE_ADMIN"),
也可以設(shè)置admin文件夾下的文件可以有多個角色來訪問,如:.antMatchers("/admin/**").hasAnyRole("ROLE_ADMIN","ROLE_USER")
也可以通過hasIpAddress來指定某一個ip可以訪問該資源,寫法如下.antMatchers("/admin/**").hasIpAddress("210.210.210.210")
3.1、自定義安全配置類
為是更方便的使用springSecurity,我們自定義一個權(quán)限的配置類,如配置登錄的URI、游客訪問的URI等配置項
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
3.2、登錄成功處理器
登錄成功后,如果需要對用戶的行為做一些記錄或者執(zhí)行其它操作,則可以使用登錄成功處理器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
3.3、springMVC 配置(訪問 /login 轉(zhuǎn)向 login.html 頁面)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
四、登錄認證
在安全策略配置代碼中有,主要看自定義的CustomUserService,此類實現(xiàn)了UserDetailsService接口,重寫了loadUserByUsername方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
|
五、權(quán)限管理
在Security安全配置類中使用了權(quán)限管理過濾器CustomFilterSecurityInterceptor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
|
說明:
customFilterSecurityInterceptor:權(quán)限管理過濾器
customAccessDecisionManager:權(quán)限管理決斷器
customFilterInvocationSecurityMetadataSource:權(quán)限配置資源管理器
其中過濾器在系統(tǒng)啟動時開始工作,并同時導(dǎo)入權(quán)限配置資源管理器和權(quán)限管理決斷器,對用戶訪問的資源進行管理。權(quán)限管理決斷器對用戶訪問的資源與用戶擁有的角色權(quán)限進行對比,以此來判斷用戶是否對某個資源具有訪問權(quán)限。
5.1、權(quán)限管理過濾器
繼承與AbstractSecurityInterceptor,實時監(jiān)控用戶的行為,防止用戶訪問未被授權(quán)的資源。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
|
5.2、權(quán)限管理決斷器
權(quán)限管理的關(guān)鍵部分就是決斷器,它實現(xiàn)了AccessDecisionManager,重寫了decide方法,使用自定義的決斷器,在用戶訪問受保護的資源時,決斷器判斷用戶擁有的角色中是否對改資源具有訪問權(quán)限,如果沒有,則拒絕訪問
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
|
5.3、權(quán)限配置資源管理器
權(quán)限配置資源管理器實現(xiàn)了FilterInvocationSecurityMetadataSource,在啟動時就去加載了所有的權(quán)限列表,權(quán)限配置資源管理器為決斷器實時提供支持,判斷用戶訪問的資源是否在受保護的范圍之內(nèi)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
|
六、根據(jù)權(quán)限設(shè)置連接
對于權(quán)限管理,我們可能希望,在一個用戶訪問的界面中,不是等到用戶點擊了超鏈接之后,才來判斷用戶有沒有這個權(quán)限,而是按照用戶擁有的權(quán)限來顯示超鏈接。這樣的設(shè)計對于用戶體驗來說,會更友好。
6.1、方法1:使用sec標簽(thymeleaf)
在html標簽中引入的Spring Security的標簽:
1 |
|
sec:authentication="name":取當(dāng)前登錄用戶的用戶名
1 |
|
sec:authorize="hasRole('ROLE_ADMIN'):表示當(dāng)前用戶是否擁有角色ROLE_ADMIN
1 |
|
sec:authorize="hasAuthority('admin')":表示當(dāng)前用戶是否擁有權(quán)限admin
1 |
|
6.2、方法二:代碼
在控制層用代碼獲取是否有權(quán)限,然后將標識放入內(nèi)容中,頁面獲取處理
七、其它代碼
7.1、controller
IndexController.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
|
7.2、dao
SysUserDao.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
SysPermissionDao.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
7.3、domain
Msg.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
7.4、pojo
SysUser.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
|
SysRole.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
SysPermission.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
|
7.5、mapperXX.xml
SysUserDao.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
SysPermissionDao.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
7.6、html
login.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
|
home.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
|
感謝各位的閱讀,以上就是“SpringCloud的spring-security怎么配置”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對SpringCloud的spring-security怎么配置這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。