一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Spring Boot如何集成Security實現(xiàn)安全認證

Spring Boot如何集成Security實現(xiàn)安全認證

2021-12-28 23:00章為忠學(xué)架構(gòu) Java教程

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

Spring Boot如何集成Security實現(xiàn)安全認證

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

一、Security簡介

安全對于企業(yè)來說至關(guān)重要,必要的安全認證為企業(yè)阻擋了外部非正常的訪問,保證了企業(yè)內(nèi)部數(shù)據(jù)的安全。

當(dāng)前,數(shù)據(jù)安全問題越來越受到行業(yè)內(nèi)公司的重視。數(shù)據(jù)泄漏很大一部分原因是非正常權(quán)限訪問導(dǎo)致的,于是使用合適的安全框架保護企業(yè)服務(wù)的安全變得非常緊迫。在Java領(lǐng)域,Spring Security無疑是最佳選擇之一。

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

二、Spring Boot對Security的支持

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

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

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

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

三、集成Security

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

1. 添加依賴

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

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

  1. org.springframework.boot
  2. spring-boot-starter-web
  3.  
  4. org.springframework.boot
  5. spring-boot-starter-thymeleaf
  6.  
  7. org.springframework.boot
  8. spring-boot-starter-security
  9.  

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

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

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

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

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

3. 添加Controller

創(chuàng)建SecurityController 類,在類中添加訪問頁面的入口。

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

4. 創(chuàng)建前端頁面

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

  1.  
  2. "http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
  3.  
  4. Hello

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

  6.  
  7.  

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

5. 測試驗證

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

Spring Boot如何集成Security實現(xiàn)安全認證

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

Spring Boot如何集成Security實現(xiàn)安全認證

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

四、登錄驗證

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

1. 創(chuàng)建頁面content.html

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

  1.  
  2. "http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
  3.  
  4. content

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

  6. "post" action="/logout">
  7.  
  8.  
  9.  

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

2. 修改index.html 頁面

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

  1. 點擊 "@{/content}">這里進入管理頁面

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

3. 修改Controller控制器

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

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

4. 創(chuàng)建 SecurityConfig 類

創(chuàng)建 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. }
  19. }

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

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

5. 測試驗證

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

http://localhost:8080/content,在 content 頁面單擊“退出”按鈕,會退出登錄狀態(tài),跳轉(zhuǎn)到登錄頁面并提示已經(jīng)退出。

Spring Boot如何集成Security實現(xiàn)安全認證

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

最后

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

原文鏈接:https://www.toutiao.com/i7042231810201240094/

延伸 · 閱讀

精彩推薦
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發(fā)項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java實現(xiàn)搶紅包功能

    Java實現(xiàn)搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現(xiàn)搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經(jīng)有好久沒有升過級了。升級完畢重啟之后,突然發(fā)現(xiàn)好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程xml與Java對象的轉(zhuǎn)換詳解

    xml與Java對象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程Java BufferWriter寫文件寫不進去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫文件寫不進去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數(shù)據(jù)的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發(fā)現(xiàn)了對于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7482021-02-04
主站蜘蛛池模板: 91精品国产一区 | 91中文在线 | 国产精品资源在线观看网站 | 欧美日韩导航 | 国产播放啪视频免费视频 | 四虎影视免费 | 欧美同志gaypronvideos | 国产精品福利在线观看秒播 | 日本一区二区三区在线 观看网站 | 日本888xxxx| 国产色网址 | 久久re这里精品23 | voyeur 中国女厕 亚洲女厕 | 久久婷婷五月免费综合色啪 | 2019nv天堂| 国产精品欧美日韩一区二区 | 日韩毛片基地一区二区三区 | 99热这里只有精品免费 | 精品日本三级在线观看视频 | 亚洲欧美专区精品伊人久久 | 欧美专区在线播放 | 欧美日韩高清不卡一区二区三区 | 99香蕉网 | 国产精品日本一区二区三区在线看 | 天天天做天天天天爱天天想 | 成年男女免费视频 | 日韩视频免费一区二区三区 | 12-14娇小videos | a级毛片毛片免费观看永久 a级黄色片免费 | 成年私人影院免费视频网站 | 小便japanesewctv| 暖暖免费高清完整版观看日本 | 欧美午夜寂寞影院安卓列表 | 国产a高清 | 日韩一级在线观看 | 操老逼| 国产精品人人视频 | 趴好撅高打屁股sp调教h | 久久久无码精品亚洲A片猫咪 | 免费网址视频在线看 | 国产亚洲精品看片在线观看 |