javascript
Spring Security与Maven教程
1.簡介
在這篇文章中,我們將演示如何針對非常特定的用例將Maven依賴項用于Spring Security。 我們使用的所有庫的最新版本都可以在Maven Central上找到。
在項目中,了解Maven依賴項的工作方式和管理方式對于有效的構建周期非常重要,并且對于我們在項目中使用的各種庫之間的版本之間應有清晰的定義,這很重要。 這是由于我們經常在多個項目中重復一組依賴項的原因,并且當我們不了解為什么要使用特定的庫版本時,我們應該犯錯。 讓我們了解一下Spring Security和Spring Framework依賴關系之間的關系。
2.使用Maven的Spring Security
在本節中,我們將介紹管理Maven依賴關系的特定用例。 這是由于Spring Security涉及許多功能,而不是您可能想要集成到應用程序中的每個功能都不需要所有依賴項的原因。 這些功能包括(但不限于):
- 通過Spring Security保護注冊過程
- 密碼加密,以便即使有人可以訪問數據庫也可以保護密碼
- 管理用戶角色和權限,以便每個用戶都有可以在應用程序中執行的特定操作
- 從應用程序中的Spring Security檢索用戶信息以及分配給用戶的角色和特權
- 受保護的RESTful API,因此訪問受到限制
2.1 spring-security-web
Spring Security Web依賴項用于提供與應用程序的Web安全相關的功能,例如:
- 在Servlet容器環境中對URL的訪問受到限制
- 管理與Web相關的Spring Secuirty過濾器
要在Spring Security中添加Web支持,以下是所需的依賴項:
Spring安全網
<properties><org.springframework.security.version>3.2.3.RELEASE</org.springframework.security.version><org.springframework.version>4.0.4.RELEASE</org.springframework.version> </properties><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-web</artifactId><version>${org.springframework.security.version}</version> </dependency>請注意,我們還定義了用作Maven屬性的Spring框架和Spring Security的版本,并在我們針對這些模塊提到的所有依賴關系中重復使用了該版本。
需要注意的要點是,Spring Framework和Spring Security遵循的時間表不同,因此版本號并不完全匹配 。 注意這一點很重要,因為例如,由于Spring Security 3.1.x是在Spring 3.1之前發行的,因此Spring Security 3.1.x不依賴于Spring 3.1.x發行版。
最后,要了解添加此依賴項時添加到項目中的所有JAR,我們可以運行一個簡單的Maven命令,當我們向其添加一些依賴項時,該命令使我們能夠查看項目的完整依賴關系樹。 這是我們可以使用的命令:
檢查依賴樹
mvn dependency:tree當我們運行此命令時,它將向我們顯示以下依賴關系樹:
添加了Web安全依賴性的依賴性樹
如上圖所示, spring-security-web JAR還帶來了其他一些依賴性,例如spring-aop , spring-beans , spring-context , spring-core , spring-expression和spring-web 。 當我們運行上面的命令時,在向我們展示依賴樹之前,maven首先再次下載了JAR,以確認是否已更改。
最后,請注意,如果其中一個依賴項需要另一個依賴項才能運行,則該依賴項也已下載并在上面的依賴關系樹中顯示為該樹的子分支。 當某種依賴關系將另一個依賴項帶入構建系統的依賴項池時,間接依賴項的子分支表示方法將被清除。
2.2 spring-security-core
現在,讓我們看一下Spring Security實現所需的核心依賴項:
Spring安全核心
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-core</artifactId><version>${org.springframework.security.version}</version> </dependency>有了Spring Security Core依賴關系,我們就可以使用以下功能:
- 訪問控制
- 方法級安全
- 也支持非Web應用程序
這是Spring Security Maven依賴項家族中最常用的依賴項之一。 現在讓我們看一下spring-security-core JAR的依賴關系樹:
Spring Security核心依賴樹
2.3 spring-security-config
如果您對與Spring Security相關的benas使用XML名稱空間定義,則在應用程序中需要spring-security-config Maven依賴項。
彈簧安全配置
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-config</artifactId><version>${org.springframework.security.version}</version><scope>runtime</scope> </dependency>由于此依賴項僅在XML名稱空間定義中使用,因此使用運行時范圍來定義它。 請注意,其他配置功能(例如ACL,CAS,OpenID和LDAP)具有其自己的依賴性,例如: spring-security-acl , spring-security-cas , spring-security-openid和spring-security-ldap 。 即使依賴項具有運行時范圍,但是仍然會下載其依賴項,讓我們在這里查看其依賴項樹:
Spring Security配置依賴樹
2.4較舊的Spring Security依賴關系存在的問題
Spring Security JAR引起的一個主要問題是,并不是所有的Spring Security JAR都依賴于最新版本的Spring Framework相關依賴關系,但實際上它們需要較舊版本的依賴關系。 這就是為什么我們需要顯式定義這些JAR,以便Maven在開始收集依賴項并針對它們進行編譯時不會報告版本沖突。 這是必需的依賴項:
顯式依賴
<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${org.springframework.version}</version> </dependency> <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${org.springframework.version}</version> </dependency> <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${org.springframework.version}</version> </dependency> <dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${org.springframework.version}</version> </dependency> <dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${org.springframework.version}</version> </dependency> <dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${org.springframework.version}</version> </dependency> <dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>${org.springframework.version}</version> </dependency> <dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${org.springframework.version}</version> </dependency>這樣,當我們在自己的pom.xml文件中顯式定義一些Spring依賴項時,我們將該依賴項置于0深度,因此,它將優先使用提到的版本,而不是Spring框架依賴項樹中的隱式依賴項。 讓我們看一下此處的依賴樹以清除此問題:
添加特定JAR時的依賴樹
當我們在此處查看依賴關系樹時,我們看到由于在pom.xml文件中明確提及而添加到項目中的JAR的確切版本。
在此處閱讀有關解決Maven中的依賴沖突的更多信息。
3. Spring Security中的快照和里程碑
Spring Security提供了Snapshot和Milestone版本,這些版本存在于Spring提供的自定義Maven存儲庫中。 閱讀本課程,以了解如何在您的應用程序中使用這些發行版。
Release構件和Snapshot構件之間的主要區別在于Release構件是特定的和預先計劃的發行版,它們是在預定的時間點制作的,被認為是穩定,穩定和永久的,以確保構建依賴于隨著時間的推移,它們是可重復的。 Central Maven存儲庫存儲發行工件。
快照可以捕獲仍在進行中并在開發過程中使用的項目。 快照構件包含兩個部分:版本號(例如“ 1.3.0”或“ 1.3”)和時間戳。 例如,用于spring-framework 1.3.0的快照工件可能具有名稱spring-framework-1.3.0-20180323.19283-3.jar。
4。結論
在本課程中,我們討論了帶有Spring Security的各種Maven依賴關系以及初學者在開始使用Spring Security功能時通常會遇到的一些主要問題。 本課是了解所需依賴項的很好的起點。
我們還解釋了在將Spring Security與Spring Framework結合使用時,指定某些特定JAR的版本有多么重要,以及我們如何不能依賴Spring Framework為這些JAR選擇的依賴版本。 通過指定特定的依賴關系,我們要做的就是確保Maven選擇這些顯式的版本規范,而不是Spring Framework的依賴版本,以免發生版本沖突。
最后,我們學習了如何使用簡單的maven命令顯示項目的依賴關系樹,并觀察項目的哪些依賴關系還取決于其他哪些依賴關系。
在此處閱讀有關Spring Framework的更多課程。
5.下載源代碼
這是一個示例,顯示了如何在項目中使用基于Spring Security的不同依賴關系。
下載您可以在此處下載此示例的完整源代碼: SpringSecurityMaven
翻譯自: https://www.javacodegeeks.com/2018/03/spring-security-with-maven-tutorial.html
總結
以上是生活随笔為你收集整理的Spring Security与Maven教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宏基电脑台式机(acer台式电脑)
- 下一篇: 在Java中使用Google的协议缓冲区