成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring Boot如何集成Security實現安全認證

安全 應用安全
前面介紹了Spring Boot 使用JWT實現Token驗證,其實Spring Boot 有完整的安全認證框架:Spring Security。接下來我們介紹如何集成Security 實現安全驗證。

[[442464]]

前面介紹了Spring Boot 使用JWT實現Token驗證,其實Spring Boot 有完整的安全認證框架:Spring Security。接下來我們介紹如何集成Security 實現安全驗證。

一、Security簡介

安全對于企業來說至關重要,必要的安全認證為企業阻擋了外部非正常的訪問,保證了企業內部數據的安全。

當前,數據安全問題越來越受到行業內公司的重視。數據泄漏很大一部分原因是非正常權限訪問導致的,于是使用合適的安全框架保護企業服務的安全變得非常緊迫。在Java領域,Spring Security無疑是最佳選擇之一。

Spring Security 是 Spring 家族中的一個安全管理框架,能夠基于 Spring 的企業應用系統提供聲明式的安全訪問控制解決方案。它提供了一組可以在Spring應用系統中靈活配置的組件,充分利用了 Spring的IoC、DI和AOP等特性,為應用系統提供聲明式的安全訪問控制功能,減少了為企業系統安全控制編寫大量重復代碼的工作。

二、Spring Boot對Security的支持

雖然,在Spring Boot出現之前,Spring Security已經發展多年,但是使用并不廣泛。安全管理這個領域一直是Shiro的天下,因為相對于Shiro,在項目中集成Spring Security還是一件麻煩的事情,所以Spring Security雖然比Shiro強大,但是卻沒有Shiro受歡迎。

隨著Spring Boot的出現,Spring Boot 對Spring Security 提供了自動化配置方案,可以零配置使用 Spring Security。這使得Spring Security重新煥發新的活力。

Spring Boot 提供了集成 Spring Security 的組件包

spring-boot-starter-security,方便我們在 Spring Boot 項目中使用 Spring Security進行權限控制。

三、集成Security

在Spring Boot 項目中集成Spring Boot Security 非常簡單,只需在項目中增加Spring Boot Security的依賴即可。下面通過示例演示Spring Boot中基礎Security的登錄驗證。

1. 添加依賴

Spring Boot 提供了集成 Spring Security 的組件包

spring-boot-starter-security,方便我們在 Spring Boot 項目中使用 Spring Security。

  1. <dependency> 
  2.     <groupId>org.springframework.boot</groupId> 
  3.     <artifactId>spring-boot-starter-web</artifactId> 
  4. </dependency> 
  5. <dependency> 
  6.     <groupId>org.springframework.boot</groupId> 
  7.     <artifactId>spring-boot-starter-thymeleaf</artifactId> 
  8. </dependency> 
  9. <dependency> 
  10.     <groupId>org.springframework.boot</groupId> 
  11.     <artifactId>spring-boot-starter-security</artifactId> 
  12. </dependency> 

上面除了引入Security組件外,因為我們要做Web系統的權限驗證,所以還添加了Web和Thymeleaf組件。

2. 配置登錄用戶名和密碼

用戶名和密碼在application.properties中進行配置。

  1. # security 
  2. spring.security.user.name=admin 
  3. spring.security.user.password=admin 

在application.properties配置文件中增加了管理員的用戶名和密碼。

3. 添加Controller

創建SecurityController 類,在類中添加訪問頁面的入口。

  1. @Controller 
  2. public class SecurityController { 
  3.     @RequestMapping("/"
  4.     public String index() { 
  5.         return "index"
  6.     } 

4. 創建前端頁面

在resources/templates 目錄下創建頁面 index.html,這個頁面就是具體的需要增加權限控制的頁面,只有登錄了才能進入此頁。

  1. <!DOCTYPE html> 
  2. <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
  3. <body> 
  4. <h1>Hello</h1> 
  5. <p>我是登錄后才可以看的頁面</p> 
  6. </body> 
  7. </html> 

我是登錄后才可以看的頁面 

5. 測試驗證

配置完成后,重啟項目,訪問地址:http://localhost:8080/,頁面會自動彈出一個登錄框,如下圖所示。 

Security安全認證 | Spring Boot如何集成Security實現安全認證 

系統自動跳轉到Spring Security默認的登錄頁面,輸入之前配置的用戶名和密碼就可以登錄系統,登錄后的頁面如下圖所示。 

Security安全認證 | Spring Boot如何集成Security實現安全認證 

通過上面的示例,我們看到Spring Security自動給所有訪問請求做了登錄保護,實現了頁面權限控制。

四、登錄驗證

前面演示了在Spring Boot項目中集成Spring Security 實現簡單的登錄驗證功能,在實際項目使用過程中,可能有的功能頁面不需要進行登錄驗證,而有的功能頁面只有進行登錄驗證才能訪問。下面通過完整的示例程序演示如何實現Security的登錄認證。

1. 創建頁面content.html

先創建頁面content.html,此頁面只有登錄用戶才可查看,否則會跳轉到登錄頁面,登錄成功后才能訪問。示例代碼如下:

  1. <!DOCTYPE html> 
  2. <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
  3. <body> 
  4. <h1>content</h1> 
  5. <p>我是登錄后才可以看的頁面</p> 
  6. <form method="post" action="/logout"
  7.     <button type="submit">退出</button> 
  8. </form> 
  9. </body> 
  10. </html> 

在上面的示例中,我們看到退出使用post請求,因為Security退出請求默認只支持post 。

2. 修改index.html 頁面

修改之前的index.html頁面,增加登錄按鈕。

  1. <p>點擊 <a th:href="@{/content}">這里</a>進入管理頁面</p> 

在上面的示例中,index頁面屬于公共頁面,無權限驗證,從index頁面進入content頁面時需要登錄驗證。

3. 修改Controller控制器

修改之前的SecurityController控制器,增加content頁面路由地址,示例代碼如下:

  1. @RequestMapping("/"
  2. public String index() { 
  3.     return "index"
  4.   
  5. @RequestMapping("/content"
  6. public String content() { 
  7.     return "content"

4. 創建 SecurityConfig 類

創建 Security的配置文件SecurityConfig類,它繼承于:

  1. @Configuration 
  2. @EnableWebSecurity 
  3. public class SecurityConfig extends WebSecurityConfigurerAdapter { 
  4.     @Override 
  5.     protected void configure(HttpSecurity http) throws Exception { 
  6.         http.authorizeRequests() 
  7.             .antMatchers("/""/home").permitAll() 
  8.             .anyRequest().authenticated() 
  9.             .and() 
  10.             .formLogin() 
  11.             .permitAll() 
  12.             .and() 
  13.             .logout() 
  14.             .permitAll() 
  15.             .and() 
  16.             .csrf() 
  17.             .ignoringAntMatchers("/logout"); 
  18.     } 

在上面的示例程序中,SecurityConfig類中配置 index.html 可以直接訪問,但 content.html 需要登錄后才可以查看,沒有登錄的自動跳轉到登錄頁面。

  • @EnableWebSecurity:開啟 Spring Security 權限控制和認證功能。
  • antMatchers("/", "/home").permitAll():配置不用登錄可以訪問的請求。
  • anyRequest().authenticated():表示其他的請求都必須有權限認證。
  • formLogin():定制登錄信息。
  • loginPage("/login"):自定義登錄地址,若注釋掉,則使用默認登錄頁面。
  • logout():退出功能,Spring Security自動監控了/logout。
  • ignoringAntMatchers("/logout"):Spring Security 默認啟用了同源請求控制,在這里選擇忽略退出請求的同源限制。

5. 測試驗證

修改完成之后重啟項目,訪問地址http://localhost:8080/可以看到 index 頁面的內容,單擊鏈接跳轉到content頁面時會自動跳轉到登錄頁面,登錄成功后才會自動跳轉到

http://localhost:8080/content,在 content 頁面單擊“退出”按鈕,會退出登錄狀態,跳轉到登錄頁面并提示已經退出。 

Security安全認證 | Spring Boot如何集成Security實現安全認證 

登錄、退出、請求受限頁面退出后跳轉到登錄頁面是常用的安全控制案例,也是賬戶系統基本的安全保障。

最后 

以上,我們就把Spring Boot如何集成Security實現安全認證介紹完了。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2020-07-14 11:00:12

Spring BootRedisJava

2024-08-05 08:45:35

SpringKafkaSCRAM

2020-09-02 17:28:26

Spring Boot Redis集成

2021-08-05 10:40:37

加密方案Spring

2024-10-17 11:24:04

2024-01-16 08:17:29

Mybatis驗證業務

2023-10-16 11:12:29

2023-12-08 12:12:21

2022-06-16 10:38:24

URL權限源代碼

2022-06-28 15:04:32

容器Docker

2022-06-28 15:06:35

容器Spring

2024-10-30 08:05:01

Spring參數電子簽章

2024-02-02 09:08:32

2019-04-15 08:32:25

Spring Boot日志門面模式

2018-11-02 15:45:41

Spring BootRedis數據庫

2023-05-26 01:05:10

2021-04-26 08:54:17

Spring BootSecurity防重登錄

2022-06-28 07:03:59

架構認證安全

2023-11-01 08:58:10

2024-06-07 15:26:22

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91就要激情 | 亚洲午夜一区二区 | 免费观看一级特黄欧美大片 | 日韩欧美一区二区三区 | 精品久久一区 | 91精品国产91久久久久久吃药 | 一区二区三区免费在线观看 | 中文字幕在线看人 | 亚洲精品无 | 亚洲 91| 婷婷综合激情 | 国产日韩中文字幕 | 亚洲性人人天天夜夜摸 | gogo肉体亚洲高清在线视 | 欧美精品在线观看 | 在线色网址| 日本不卡在线视频 | 精品av久久久久电影 | 激情福利视频 | 国产亚洲精品久久久久久豆腐 | 成年男女免费视频网站 | 日韩三级在线观看 | 欧美激情久久久 | 日韩在线一区二区 | 亚洲在线观看视频 | 亚洲a一区二区 | 国产在线激情视频 | 久久久久久看片 | 国产三级 | 欧美成人a∨高清免费观看 91伊人 | 欧美日韩黄 | 亚洲国产成人精品女人久久久 | 午夜资源 | 午夜天堂精品久久久久 | 人人玩人人干 | 日韩在线中文字幕 | 91精品久久久久久久久 | 日韩精品在线看 | 亚洲精品国产一区 | 久久国产亚洲 | 欧美日韩电影一区二区 |