此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Security 6.5.3! |
获取 Spring Security
本节介绍如何获取 Spring Security 二进制文件。 有关如何获取源代码,请参阅源代码。
版本编号
Spring Security 版本格式为 MAJOR。次要。PATCH 以便:
-
主要版本可能包含重大更改。 通常,这样做是为了提供改进的安全性以匹配现代安全实践。
-
次要版本包含增强功能,但被视为被动更新。
-
PATCH 级别应该完全兼容,向前和向后,修复错误的更改可能除外。
用法
与大多数开源项目一样,Spring Security 将其依赖项部署为 Maven 工件,这使得它们与 Maven 和 Gradle 兼容。以下部分演示了如何将 Spring Security 与这些构建工具集成,并提供了 Spring Boot 和独立用法的示例。
弹簧靴
Spring Boot 提供了一个spring-boot-starter-security
聚合 Spring Security 相关依赖项的Starters。
使用Starters最简单和首选的方法是通过在(Eclipse 或 IntelliJ、NetBeans)中使用 IDE 集成或通过 start.spring.io 来使用 Spring Initializr。
或者,您可以手动添加Starters,如以下示例所示:
-
Maven
-
Gradle
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
dependencies {
implementation "org.springframework.boot:spring-boot-starter-security"
}
由于 Spring Boot 提供了一个 Maven BOM 来管理依赖版本,因此您无需指定版本。 如果您希望覆盖 Spring Security 版本,可以使用构建属性执行此作,如下所示:
-
Maven
-
Gradle
<properties>
<!-- ... -->
<spring-security.version>7.0.0-M2</spring-security.version>
</properties>
ext['spring-security.version']='7.0.0-M2'
由于 Spring Security 仅在主要版本中进行重大更改,因此您可以安全地将较新版本的 Spring Security 与 Spring Boot 一起使用。 但是,有时您可能还需要更新 Spring Framework 的版本。 您可以通过添加如下所示的构建属性来做到这一点:
-
Maven
-
Gradle
<properties>
<!-- ... -->
<spring.version>7.0.0-M8</spring.version>
</properties>
ext['spring.version']='7.0.0-M8'
如果您使用其他功能(例如 LDAP、OAuth 2 等),您还需要包含相应的项目模块和依赖项。
独立使用(没有 Spring Boot)
当您在没有 Spring Boot 的情况下使用 Spring Security 时,首选方法是使用 Spring Security 的 BOM 来确保在整个项目中使用一致的 Spring Security 版本。
-
Maven
-
Gradle
<dependencyManagement>
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-bom</artifactId>
<version>{spring-security-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
plugins {
id "io.spring.dependency-management" version "1.0.6.RELEASE"
}
dependencyManagement {
imports {
mavenBom 'org.springframework.security:spring-security-bom:7.0.0-M2'
}
}
Spring 提供了一个Dependency Management Plugin 对于 Gradle |
最小的 Spring Security Maven 依赖项集通常如下所示:
-
Maven
-
Gradle
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
</dependency>
</dependencies>
dependencies {
implementation "org.springframework.security:spring-security-web"
implementation "org.springframework.security:spring-security-config"
}
如果您使用其他功能(例如 LDAP、OAuth 2 等),您还需要包含相应的项目模块和依赖项。
Spring Security 针对 Spring Framework 7.0.0-M8 构建,但通常应该适用于任何较新版本的 Spring Framework 5.x。
许多用户可能会违背 Spring Security 的传递依赖关系解析 Spring Framework 7.0.0-M8 这一事实,这可能会导致奇怪的类路径问题。
解决此问题的最简单方法是使用spring-framework-bom
在<dependencyManagement>
部分的pom.xml
或您的dependencyManagement
部分的build.gradle
.
-
Maven
-
Gradle
<dependencyManagement>
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>7.0.0-M8</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
plugins {
id "io.spring.dependency-management" version "1.0.6.RELEASE"
}
dependencyManagement {
imports {
mavenBom 'org.springframework:spring-framework-bom:7.0.0-M8'
}
}
Spring 提供了一个Dependency Management Plugin 对于 Gradle |
前面的示例确保 Spring Security 的所有传递依赖项都使用 Spring 7.0.0-M8 模块。
此方法使用 Maven 的“物料清单”(BOM)概念,并且仅在 Maven 2.0.9+ 中可用。有关如何解决依赖关系的其他详细信息,请参阅 Maven 的依赖机制简介文档。 |
Maven 存储库
所有 GA 版本都部署到 Maven Central,因此您无需在构建配置中声明其他 Maven 存储库。
对于 Gradle,使用mavenCentral()
存储库对于 GA 版本来说已经足够了。
repositories {
mavenCentral()
}
如果您使用 SNAPSHOT 版本,则需要确保定义了 Spring Snapshot 存储库:
-
Maven
-
Gradle
<repositories>
<!-- ... possibly other repository elements ... -->
<repository>
<id>spring-snapshot</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/snapshot</url>
</repository>
</repositories>
repositories {
maven { url 'https://repo.spring.io/snapshot' }
}
如果您使用里程碑或候选版本,则需要确保定义了 Spring Milestone 存储库,如以下示例所示:
-
Maven
-
Gradle
<repositories>
<!-- ... possibly other repository elements ... -->
<repository>
<id>spring-milestone</id>
<name>Spring Milestone Repository</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
repositories {
maven { url 'https://repo.spring.io/milestone' }
}