使用Spring?Security搭建極簡(jiǎn)的安全網(wǎng)站教程
Spring Security 簡(jiǎn)介
Spring Security 項(xiàng)目是一個(gè)安全框架,提供了認(rèn)證,授權(quán)和常見的網(wǎng)絡(luò)攻擊保護(hù)功能。在基于 Spring 開發(fā)的應(yīng)用中,Spring Security 是一個(gè)被廣泛應(yīng)用的安全框架,成為了實(shí)際的標(biāo)準(zhǔn)。與所有 Spring 項(xiàng)目類似,Spring Security 易于擴(kuò)展,滿足定制要求。主要特點(diǎn)如下:
- 對(duì)認(rèn)證和授權(quán)的全面、可擴(kuò)展的支持
- 防范會(huì)話固定攻擊、點(diǎn)擊劫持攻擊和跨站點(diǎn)偽造攻擊等風(fēng)險(xiǎn)
- Servlet API 集成
- Spring Web MVC 集成
- 還有更多…
本文將搭建一個(gè)極簡(jiǎn)的項(xiàng)目,初步體驗(yàn)一下 Spring Security.
創(chuàng)建項(xiàng)目
開發(fā)工具使用 IntelliJ IDEA
,也可以選擇自己喜歡的集成開發(fā)工具。
首先,打開新建項(xiàng)目向?qū)?,選擇 Spring Initializr
向?qū)А?br />然后,填寫項(xiàng)目的配置信息。
接著,選擇 Spring Web
和 Spring Security
兩個(gè)依賴模塊。
Spring Security 依賴
最后,選擇項(xiàng)目的保存路徑,完成項(xiàng)目創(chuàng)建。
安全配置
完成項(xiàng)目創(chuàng)建后,在 pom.xml
中,會(huì)出現(xiàn)下面兩個(gè)依賴配置,分別對(duì)應(yīng) Spring Security
和 Spring Web
.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
首次運(yùn)行項(xiàng)目
直接運(yùn)行上面創(chuàng)建的項(xiàng)目,訪問項(xiàng)目首頁(yè):http://localhost:8080/
. 你會(huì)發(fā)現(xiàn),出現(xiàn)的不是首頁(yè),而是一個(gè)登錄頁(yè)面(雖然樣子有點(diǎn)丑)。
Spring Security 默認(rèn)登錄頁(yè)面
這就說(shuō)明了一個(gè)問題。雖然我們還沒有寫一行代碼,但是,首頁(yè)的 URL 已經(jīng)被 Spring Security 保護(hù)起來(lái)了,需要登錄才能訪問。
那么,如何登錄呢?Spring Security 默認(rèn)為我們創(chuàng)建了一個(gè)用戶:user。該用戶的登錄口令需要從控制臺(tái)輸出查詢:
Using generated security password: 0d243837-c61c-4717-b30a-9f6ff783b69e
登錄成功后,出現(xiàn)下面的頁(yè)面。
未配置首頁(yè)
因?yàn)槲覀儧]有配置首頁(yè)的 URL 路徑,所以首頁(yè)顯示有問題。但是,用戶登錄已經(jīng)成功了,起到了資源保護(hù)作用。
添加控制器
接下來(lái),我們添加一個(gè)控制器,讓首頁(yè)能夠正常顯示。
@RestController public class HomeController { @GetMapping("/") public String home() { return "Welcome to Learn Spring Security."; } }
再次運(yùn)行項(xiàng)目
重新啟動(dòng)運(yùn)行項(xiàng)目,訪問首頁(yè)。再次登錄成功后,首頁(yè)正常顯示。
已配置首頁(yè)
注意:每次啟動(dòng)項(xiàng)目,產(chǎn)生的隨機(jī)登錄口令都不相同。因此,重啟項(xiàng)目后,需要重新拷貝控制臺(tái)中輸出的登錄口令。
源代碼 Github: https://github.com/nilpoint/spring-security-sample
小結(jié)
本文創(chuàng)建了一個(gè)基本的 Web 訪問安全控制項(xiàng)目,了解了 Spring Security 對(duì)資源保護(hù) 的一些默認(rèn)配置行為。下一篇文章中,我們就對(duì)這些默認(rèn)行為做進(jìn)一步研究,更多關(guān)于Spring Security搭建網(wǎng)站的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解Java編程中final,finalize,finally的區(qū)別
這篇文章主要介紹了詳解Java編程中final,finalize,finally的區(qū)別,這個(gè)在Java面試題中簡(jiǎn)直是太常見了...需要的朋友可以參考下2015-11-11詳談Java中instanceof和isInstance的區(qū)別
下面小編就為大家?guī)?lái)一篇詳談Java中instanceof和isInstance的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-01-01使用fileupload組件實(shí)現(xiàn)文件上傳功能
這篇文章主要為大家詳細(xì)介紹了使用fileupload實(shí)現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10springboot?整合?clickhouse的實(shí)現(xiàn)示例
本文主要介紹了springboot?整合?clickhouse的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02