SpringSecurity 認(rèn)證、注銷、權(quán)限控制功能(注銷、記住密碼、自定義登入頁)
??簡介
在 Web 開發(fā)中,安全一直是非常重要的一個方面。安全雖然屬于應(yīng)用的非功能性需求,但是應(yīng)該在應(yīng)用 開發(fā)的初期就考慮進(jìn)來。如果在應(yīng)用開發(fā)的后期才考慮安全的問題,就可能陷入一個兩難的境地:一方 面,應(yīng)用存在嚴(yán)重的安全漏洞,無法滿足用戶的要求,并可能造成用戶的隱私數(shù)據(jù)被攻擊者竊?。涣硪?方面,應(yīng)用的基本架構(gòu)已經(jīng)確定,要修復(fù)安全漏洞,可能需要對系統(tǒng)的架構(gòu)做出比較重大的調(diào)整,因而 需要更多的開發(fā)時間,影響應(yīng)用的發(fā)布進(jìn)程。因此,從應(yīng)用開發(fā)的第一天就應(yīng)該把安全相關(guān)的因素考慮 進(jìn)來,并在整個應(yīng)用的開發(fā)過程中。
官網(wǎng):Spring Security :: Spring Security
Spring Security是一個Java框架,用于保護(hù)應(yīng)用程序的安全性。它提供了一套全面的安全解決方案,包括身份驗證、授權(quán)、防止攻擊等功能。Spring Security基于過濾器鏈的概念,可以輕松地集成到任何基于Spring的應(yīng)用程序中。它支持多種身份驗證選項和授權(quán)策略,開發(fā)人員可以根據(jù)需要選擇適合的方式。此外,Spring Security還提供了一些附加功能,如集成第三方身份驗證提供商和單點(diǎn)登錄,以及會話管理和密碼編碼等。總之,Spring Security是一個強(qiáng)大且易于使用的框架,可以幫助開發(fā)人員提高應(yīng)用程序的安全性和可靠性。
??認(rèn)識Spring Security
以實現(xiàn)強(qiáng)大的 Web 安全控制,對于安全控制,我們僅需要引入 spring-boot-starter-security 模塊,進(jìn)行少量的配置,即可實現(xiàn)強(qiáng)大的安全管理!
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
記住幾個類:
- WebSecurityConfigurerAdapter: 自定義Security策略
- AuthenticationManagerBuilder:自定義認(rèn)證策略
- @EnableWebSecurity:開啟WebSecurity模式
Spring Security的兩個主要目標(biāo)是 “認(rèn)證” 和 “授權(quán)”(訪問控制)。
??“認(rèn)證”(Authentication)
- 身份驗證是關(guān)于驗證您的憑據(jù),如用戶名/用戶ID和密碼,以驗證您的身份。
- 身份驗證通常通過用戶名和密碼完成,有時與身份驗證因素結(jié)合使用。
??“授權(quán)” (Authorization)
- 授權(quán)發(fā)生在系統(tǒng)成功驗證您的身份后,最終會授予您訪問資源(如信息,文件,數(shù)據(jù)庫,資金,位置, 幾乎任何內(nèi)容)的完全權(quán)限。
- 這個概念是通用的,而不是只在Spring Security 中存在。
??權(quán)限控制和注銷
開啟自動配置的注銷的功能
//定制請求的授權(quán)規(guī)則 @Override protected void configure(HttpSecurity http) throws Exception { //.... //開啟自動配置的注銷的功能 // /logout 注銷請求 http.logout(); }
我們想讓他注銷成功后,依舊可以跳轉(zhuǎn)到首頁
導(dǎo)入依賴:
<!-- https://mvnrepository.com/artifact/org.thymeleaf.extras/thymeleafextras-springsecurity4 --> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId> <version>3.0.4.RELEASE</version> </dependency>
如果注銷404 了,就是因為它默認(rèn)防止 csrf 跨站請求偽造,因為會產(chǎn)生安全問題,我們可以將請求 改為post 表單提交,或者在 spring security 中關(guān)閉 csrf 功能;我們試試:在 配置中增加
http.csrf().disable();//關(guān)閉csrf功能:跨站請求偽造,默認(rèn)只能通過post方式提交logout 請求 http.logout().logoutSuccessUrl("/");
CSRF(Cross-site request forgery,跨站請求偽造)攻擊是一種惡意利用行為,其核心在于攻擊者通過技術(shù)手段欺騙用戶瀏覽器去訪問一個已經(jīng)認(rèn)證過的網(wǎng)站,并執(zhí)行如發(fā)郵件、發(fā)送消息或財產(chǎn)操作等。CSRF與XSS(跨站腳本)不同,后者是利用站點(diǎn)內(nèi)的信任用戶,而CSRF則是假冒受信任用戶對受信任網(wǎng)站進(jìn)行請求。
??記住密碼的功能
??開啟記住密碼
//定制請求的授權(quán)規(guī)則 @Override protected void configure(HttpSecurity http) throws Exception { //。。。。。。。。。。。 //記住我 http.rememberMe(); }
??實現(xiàn)原理
我們可以查看瀏覽器的 cookie
點(diǎn)擊注銷的時候,可以發(fā)現(xiàn), spring security 幫我們自動刪除了這個 cookie
結(jié)論:登錄成功后,將cookie發(fā)送給瀏覽器保存,以后登錄帶上這個cookie,只要通過檢查就可以 免登錄了。如果點(diǎn)擊注銷,則會刪除這個cookie。
??定制登錄頁
現(xiàn)在這個登錄頁面都是spring security 默認(rèn)的,怎么樣可以使用我們自己寫的Login界面
在剛才的登錄頁配置后面指定 loginpage
http.formLogin().loginPage("/toLogin");
配置接收登錄的用戶名和密碼的參數(shù)
http.formLogin() .usernameParameter("username") .passwordParameter("password") .loginPage("/toLogin") .loginProcessingUrl("/login"); // 登陸表單提交請求
到此這篇關(guān)于SpringSecurity 認(rèn)證、注銷、權(quán)限控制和注銷、記住密碼、自定義登入頁等知識總結(jié)的文章就介紹到這了,更多相關(guān)SpringSecurity認(rèn)證、注銷、權(quán)限控制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java Spring Security認(rèn)證與授權(quán)及注銷和權(quán)限控制篇綜合解析
- 詳解如何在項目中應(yīng)用SpringSecurity權(quán)限控制
- Spring?Security權(quán)限管理實現(xiàn)接口動態(tài)權(quán)限控制
- SpringBoot如何整合Springsecurity實現(xiàn)數(shù)據(jù)庫登錄及權(quán)限控制
- Springboot+Spring Security實現(xiàn)前后端分離登錄認(rèn)證及權(quán)限控制的示例代碼
- SpringBoot整合Security實現(xiàn)權(quán)限控制框架(案例詳解)
- 詳解Spring Security 中的四種權(quán)限控制方式
- Spring Security如何使用URL地址進(jìn)行權(quán)限控制
- Vue 動態(tài)路由的實現(xiàn)及 Springsecurity 按鈕級別的權(quán)限控制
相關(guān)文章
詳解application.properties和application.yml文件的區(qū)別
這篇文章主要介紹了詳解application.properties和application.yml文件的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01Java 數(shù)組元素倒序的三種方式(小結(jié))
這篇文章主要介紹了Java 數(shù)組元素倒序的三種方式(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Java大數(shù)據(jù)處理的核心技術(shù)MapReduce框架
MapReduce是一種分布式計算框架,適用于大規(guī)模的數(shù)據(jù)處理。它將大數(shù)據(jù)分成多個小數(shù)據(jù)塊,通過Map和Reduce兩個階段對數(shù)據(jù)進(jìn)行處理和分析。MapReduce框架具有可靠、高效、可擴(kuò)展等特點(diǎn),已經(jīng)成為大數(shù)據(jù)處理的核心技術(shù)2023-05-05SpringBoot啟動security后如何關(guān)閉彈出的/login頁面
這篇文章主要介紹了SpringBoot啟動security后如何關(guān)閉彈出的login頁面問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12git stash 和unstash的使用操作,git unstash failed
這篇文章主要介紹了git stash 和unstash的使用操作,git unstash failed,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02