日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SpringBoot如何集成Security實(shí)現(xiàn)安全認(rèn)證

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

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供天元網(wǎng)站建設(shè)、天元做網(wǎng)站、天元網(wǎng)站設(shè)計(jì)、天元網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、天元企業(yè)網(wǎng)站模板建站服務(wù),10年天元做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

一、Security簡介

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

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

Spring Security 是 Spring 家族中的一個(gè)安全管理框架,能夠基于 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ā)展多年,但是使用并不廣泛。安全管理這個(gè)領(lǐng)域一直是Shiro的天下,因?yàn)橄鄬τ赟hiro,在項(xiàng)目中集成Spring Security還是一件麻煩的事情,所以Spring Security雖然比Shiro強(qiáng)大,但是卻沒有Shiro受歡迎。

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

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

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

三、集成Security

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

1. 添加依賴

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

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

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

上面除了引入Security組件外,因?yàn)槲覀円鯳eb系統(tǒng)的權(quán)限驗(yàn)證,所以還添加了Web和Thymeleaf組件。

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

用戶名和密碼在application.properties中進(jìn)行配置。

 
 
 
  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.     } 

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

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

 
 
 
  1.  
  2.  
  3.  
  4. Hello

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

     
  6.  
  7.  

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

5. 測試驗(yàn)證

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

 

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

 

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

四、登錄驗(yàn)證

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

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

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

 
 
 
  1.  
  2.  
  3.  
  4. content

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

     
  6.  
  7.     退出 
  8.  
  9.  
  10.  

在上面的示例中,我們看到退出使用post請求,因?yàn)镾ecurity退出請求默認(rèn)只支持post 。

2. 修改index.html 頁面

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

 
 
 
  1. 點(diǎn)擊 這里進(jìn)入管理頁面

     

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

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. 創(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.     } 

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

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

5. 測試驗(yàn)證

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

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

 

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

最后 

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


名稱欄目:SpringBoot如何集成Security實(shí)現(xiàn)安全認(rèn)證
路徑分享:http://m.5511xx.com/article/djhhsgp.html