国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

服務器之家 - 編程語言 - Java教程 - Java Spring Security認證與授權及注銷和權限控制篇綜合解析

Java Spring Security認證與授權及注銷和權限控制篇綜合解析

2022-03-02 00:43龍弟-idea Java教程

Spring Security 是 Spring 家族中的一個安全管理框架,實際上,在 Spring Boot 出現之前,Spring Security 就已經發展了多年了,但是使用的并不多,安全管理這個領域,一直是 Shiro 的天下

Spring Security簡介:

Spring Security 是針對Spring項目的安全框架,也是Spring Boot底層安全模塊默認的技術選型,它可以實現強大的Web安全控制,對于安全控制,我們只需要引入 spring-boot-starter-security 模塊,進行少量的配置,即可實現強大的安全管理!

記住幾個類:

  • WebSecurityConfigurerAdapter:自定義Security策略
  • AuthenticationManagerBuilder:自定義認證策略
  • @EnableWebSecurity:開啟WebSecurity模式

Spring Security的兩個主要目標是 “認證” 和 “授權”(訪問控制)。

“認證”(Authentication)

身份驗證是關于驗證您的憑據,如用戶名/用戶ID和密碼,以驗證您的身份。

身份驗證通常通過用戶名和密碼完成,有時與身份驗證因素結合使用。

“授權” (Authorization)

授權發生在系統成功驗證您的身份后,最終會授予您訪問資源(如信息,文件,數據庫,資金,位置,幾乎任何內容)的完全權限。

這個概念是通用的,而不是只在Spring Security 中存在。

Spring Security 框架對于認證和授權很好的支持。在用戶認證方面,Spring Security 框架支持主流的認證方式,包括 HTTP 基本認證、HTTP 表單驗證、HTTP 摘要認證、OpenID 和 LDAP 等。在用戶授權方面,Spring Security 提供了基于角色的訪問控制和訪問控制列表(Access Control List,ACL),可以對應用中的領域對象進行細粒度的控制。

下面是spring security官網:Spring Security 找到對應的官方文檔:Spring Security Reference

Java Spring Security認證與授權及注銷和權限控制篇綜合解析

 

實驗環境搭建:

1.新建一個初始的springboot項目web模塊,thymeleaf模塊

2.導入靜態資源

Java Spring Security認證與授權及注銷和權限控制篇綜合解析

3、controller跳轉!

Java Spring Security認證與授權及注銷和權限控制篇綜合解析

4、測試實驗環境是否成功

 

認證和授權

我們測試的環境,是誰都可以訪問,現在我們使用 Spring Security 增加上認證和授權的功能

1、引入 Spring Security 模塊

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-security</artifactId>
</dependency>

2、編寫 Spring Security 配置類

參考對應的官方文檔:Spring Security Reference

Java Spring Security認證與授權及注銷和權限控制篇綜合解析

3、編寫基礎配置類

@EnableWebSecurity // 開啟WebSecurity模式
public class SecurityConfig extends WebSecurityConfigurerAdapter {

 @Override
 protected void configure(HttpSecurity http) throws Exception {
     
}
}

4.定義授權的規則:

在配置類中看授權的源碼:

Java Spring Security認證與授權及注銷和權限控制篇綜合解析

Java Spring Security認證與授權及注銷和權限控制篇綜合解析

5、測試,發現除了首頁都進不去了!因為我們目前沒有登錄的角色,因為請求需要登錄的角色擁有對應的權限才可以!

6、在configure()方法中加入以下配置,開啟自動配置的登錄功能!

從源碼解釋中看

Java Spring Security認證與授權及注銷和權限控制篇綜合解析

// 開啟自動配置的登錄功能
// /login 請求來到登錄頁
// /login?error 重定向到這里表示登錄失敗
http.formLogin();

7、測試一下:發現,沒有權限的時候,會跳轉到登錄的頁面!

Java Spring Security認證與授權及注銷和權限控制篇綜合解析

8、查看剛才登錄頁的注釋信息;

我們可以定義認證規則,從源碼中查看

Java Spring Security認證與授權及注銷和權限控制篇綜合解析

重寫configure(AuthenticationManagerBuilder auth)方法

//定義認證規則
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
 
 //在內存中定義,也可以在jdbc中去拿....
 auth.inMemoryAuthentication()
        .withUser("kuangshen").password("123456").roles("vip2","vip3")
        .and()
        .withUser("root").password("123456").roles("vip1","vip2","vip3")
        .and()
        .withUser("guest").password("123456").roles("vip1","vip2");
}

9、測試,我們可以使用這些賬號登錄進行測試!發現會報錯!

There is no PasswordEncoder mapped for the id “null”

10、原因,我們要將前端傳過來的密碼進行某種方式加密,否則就無法登錄,修改代碼

Java Spring Security認證與授權及注銷和權限控制篇綜合解析

11、測試,登錄成功,并且每個角色只能訪問自己認證下的規則

 

權限控制和注銷

1、開啟自動配置的注銷的功能

Java Spring Security認證與授權及注銷和權限控制篇綜合解析

2、在前端,增加一個注銷的按鈕,index.html 導航欄中

<a class="item" th:href="@{/logout}" rel="external nofollow" >
 <i class="sign-out icon"></i> 注銷
</a>

3、可以去測試一下,登錄成功后點擊注銷,發現注銷完畢會跳轉到登錄頁面!

4、但是,我們想讓他注銷成功后,依舊可以跳轉到首頁,該怎么處理呢?

// .logoutSuccessUrl("/"); 注銷成功來到首頁
http.logout().logoutSuccessUrl("/");

5、測試,注銷完畢后,發現跳轉到首頁OK

6、現在來一個需求:用戶沒有登錄的時候,導航欄上只顯示登錄按鈕,用戶登錄之后,導航欄可以顯示登錄的用戶信息及注銷按鈕!還有就是,比如longdi這個用戶,它只有 vip2,vip3功能,那么登錄則只顯示這兩個功能,而vip1的功能菜單不顯示!這個就是真實的網站情況了!

我們需要結合thymeleaf中的一些功能

sec:authorize="isAuthenticated()":是否認證登錄!來顯示不同的頁面

Maven依賴:

<dependency>
 <groupId>org.thymeleaf.extras</groupId>
 <artifactId>thymeleaf-extras-springsecurity5</artifactId>
 <version>3.0.4.RELEASE</version>
</dependency>

7、修改我們的 前端頁面

導入命名空間 xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"

修改導航欄,增加認證判斷

8、重啟測試,可以登錄試試看,登錄成功后確實,顯示了我們想要的頁面;

9、如果注銷404了,就是因為它默認防止csrf跨站請求偽造,因為會產生安全問題,可以將請求改為post表單提交,或者在spring security中關閉csrf功能;試試在 配置中增加

Java Spring Security認證與授權及注銷和權限控制篇綜合解析

10、繼續將下面的角色功能塊認證完成!測試成功!

到此這篇關于Java Spring Security認證與授權及注銷和權限控制篇綜合解析的文章就介紹到這了,更多相關Java Spring Security內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_48838340/article/details/120661679

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩在线视频观看 | 亚洲一区二区三区免费视频 | 国产精品区二区三区日本 | 日韩一区二区在线播放 | 午夜视频在线免费观看 | 一区二区三区在线视频播放 | 国产欧美精品区一区二区三区 | 91精品国产乱码久久久久久久久 | 精品一区二区电影 | 爱干视频 | a视频在线观看免费 | 精品在线视频播放 | 日本在线视频免费观看 | 黄色片视频在线观看 | 一区二区精品在线 | 日本不卡免费一区二区三区综合久久 | 亚洲国产aⅴ成人精品无吗 久久综合久久久 | 日韩在线一区二区 | 亚洲成人精品 | 黄色片在线观看视频 | 欧美成人h版在线观看 | 91久久国产综合久久 | 亚洲成人久久久 | 精品无码久久久久国产 | 国产精品伊人影院 | 久久99精品一区二区三区 | 国产精品一区二区久久久 | 久久久美女 | 国产美女视频网站 | 日韩 欧美 中文 | 欧美第一页 | 国产精品美女久久久久久久久久久 | 日韩成人在线电影 | 欧美久久久网站 | 99精品视频在线观看 | 久操成人| 精品入口麻豆88视频 | a∨色狠狠一区二区三区 | 我要看一级黄色 | 日韩在线 中文字幕 | 99久久久无码国产精品 |