Spring Security - Maven



Spring Security是一个类似于Spring框架的模块化框架。Spring Security有三个主要的模块,如下所示:

  • Spring Security Core − 提供身份验证和访问控制功能。此模块是所有Spring Security项目/模块所必需的。

  • Spring Security Web − 为基于Web的项目提供Spring Security支持。

  • Spring Security Config − 提供Spring Security XML命名空间和注解。

对于其他API支持,例如LDAP、OpenID、ACL、CAS和OAuth,Spring Security提供相应的模块,如下所示:

  • LDAP − Spring Security LDAP

  • OpenID − Spring Security OpenID

  • ACL − Spring Security ACL

  • CAS − Spring Security CAS

  • OAuth2 − Spring Security OAuth

Maven 模块

要在Maven中开始使用Spring Security和Spring集成,我们可以定义具有其版本的属性,如下所示:

属性

<properties>  
...
   <spring.security.version>5.3.4.RELEASE</spring.security.version>
   <spring.version>5.2.8.RELEASE</spring.version>
</properties>

Spring Security和Spring框架的版本是独立的,并且处于不同的发布周期,因此它们的兼容版本可能不同。

依赖项

Spring Security的Maven项目遵循spring-security-*命名约定,Spring项目类似于spring-*。对于上面讨论的项目,以下是Maven依赖项列表:

  • Spring Security Core − spring-security-core

  • Spring Security Web − spring-security-web

  • Spring Security Config − spring-security-config

  • LDAP − spring-security-ldap

  • OpenID − spring-security-openid

  • ACL − spring-security-acl

  • CAS − spring-security-cas

  • OAuth2 − spring-security-oauth2

对于Spring,我们可以使用spring-webmvc项目作为顶级依赖项,Maven将自动解析以下相关依赖项。

  • Spring Core − spring-core

  • Spring Context − spring-context

  • Spring Beans − spring-beans

  • Spring AOP − spring-aop

  • Spring Expressions − spring-expression

  • Spring JCL − spring-jcl

  • Spring Web − spring-web

  • Spring WebMVC − spring-webmvc

示例 - Spring 的 POM

以下是一个示例POM.XML,我们在其中使用Maven使用Spring和Spring Security依赖项。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.tutorialspoint</groupId>
   <artifactId>SpringSecurityFormLogin</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>Spring Security Form Login</name>
   <description>A Sample Spring Security Form Login Project</description>
   <packaging>war</packaging>  
   <properties>  
      <maven.compiler.target>1.8</maven.compiler.target>  
      <maven.compiler.source>1.8</maven.compiler.source>  
      <spring.security.version>5.3.4.RELEASE</spring.security.version>
      <spring.version>5.2.8.RELEASE</spring.version>
   </properties>  
   <dependencies>  
      <dependency>  
         <groupId>org.springframework</groupId>  
         <artifactId>spring-webmvc</artifactId>  
         <version>${spring.version}</version>  
      </dependency>  
      <dependency>  
         <groupId>org.springframework.security</groupId>  
         <artifactId>spring-security-web</artifactId>  
         <version>${spring.security.version}</version>  
      </dependency>  
      <dependency>  
         <groupId>org.springframework.security</groupId>  
         <artifactId>spring-security-core</artifactId>  
         <version>${spring.security.version}</version>  
      </dependency>  
      <dependency>  
         <groupId>org.springframework.security</groupId>  
         <artifactId>spring-security-config</artifactId>  
         <version>${spring.security.version}</version>  
      </dependency>  
      <dependency>  
         <groupId>javax.servlet</groupId>  
         <artifactId>javax.servlet-api</artifactId>  
         <version>3.1.0</version>  
         <scope>provided</scope>  
      </dependency>  
      <dependency>  
         <groupId>javax.servlet</groupId>  
         <artifactId>jstl</artifactId>  
         <version>1.2</version>  
      </dependency>  
   </dependencies>  
   <build>  
      <plugins>  
         <plugin>  
            <groupId>org.apache.maven.plugins</groupId>  
            <artifactId>maven-war-plugin</artifactId>  
            <version>2.6</version>  
            <configuration>  
               <failOnMissingWebXml>false</failOnMissingWebXml>  
            </configuration>  
         </plugin>  
      </plugins>  
   </build>  
</project>

Spring Boot - Spring Security 集成

Spring Boot使用spring-boot-starter-security作为启动依赖项,提供了与Spring Security更简单、更容易的集成。它将自动解析所有相关依赖项。

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

示例 - Spring Boot 的 POM

以下是一个示例POM.XML,我们在其中使用Maven使用Spring Boot和Spring Security依赖项。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>3.3.1</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com.tutorialspoint.security</groupId>
   <artifactId>formlogin</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>formlogin</name>
   <description>Demo project for Spring Boot</description>
   <url/>
   <licenses>
      <license/>
   </licenses>
   <developers>
      <developer/>
   </developers>
   <scm>
      <connection/>
      <developerConnection/>
      <tag/>
      <url/>
   </scm>
   <properties>
      <java.version>21</java.version>
   </properties>
   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-security</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-thymeleaf</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
         <groupId>org.thymeleaf.extras</groupId>
         <artifactId>thymeleaf-extras-springsecurity6</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-devtools</artifactId>
         <scope>runtime</scope>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.springframework.security</groupId>
         <artifactId>spring-security-test</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>
   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>
</project>
广告
© . All rights reserved.