zoukankan      html  css  js  c++  java
  • 使用Maven构建Spring Security应用

    1.概述

    本文将解释如何使用Maven构建Spring Security应用程序。将讨论使用Spring Security依赖项的特定用例。最新的Spring Security版本可以在Maven Central上找到。

    这是前一篇Spring与Maven文章的后续内容,因此对于非安全性的Spring依赖项,这是开始的地方。

    2. Maven与Spring Security

    2.1. spring-security-core

    Core Spring Security支持 - spring-security-core -包含身份验证和访问控制功能。并且支持独立(非Web)应用程序,方法级安全性和JDBC:

    <properties>
        <spring-security.version>5.0.6.RELEASE</spring-security.version>
        <spring.version>5.0.6.RELEASE</spring.version>
    </properties>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>${spring-security.version}</version>
    </dependency>
    

    请注意,Spring和Spring Security处于不同的发布计划中,因此版本号之间并不总是匹配1:1

    如果你正在使用旧版本的Spring - 理解这一事实是非常重要的,幸运的是,Spring Security 3.1.x不依赖于Spring 3.1.x版本!这是因为Spring Security 3.1.x是在Spring 3.1之前发布的。计划是在将来的版本中更紧密地调整这些依赖关系。

    2.2. spring-security-web

    要为Spring Security添加Web支持,需要spring-security-web依赖项

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${spring-security.version}</version>
    </dependency>
    

    它包含过滤器和相关的Web安全基础结构,可在Servlet环境中启用URL访问控制。

    2.3。 Spring Security和较旧的Spring Core依赖项问题

    这个新的依赖项也对Maven依赖图展示出问题,如上所述,Spring Security jar不依赖于最新的Spring核心jar(但在之前的版本上)。这可能会导致这些较旧的依赖项在类路径上占据优势,而不是更新的4.x Spring组件。

    要理解为什么会这样,我们需要看看Maven如何解决这些问题,如果版本冲突,Maven将选择最接近树根的jar。在我们的例子中,spring-core由spring-orm(使用4.x.RELEASE版本)定义,但也由spring-security-core(使用旧的3.2.8.RELEASE版本)定义,所以在这两种情况下,spring-jdbc都是从我们项目的根pom定义的深度为1
    ,在我们自己的pom中定义spring-orm和spring-security-core的顺序实际上很重要。
    第一个将优先考虑,所以我们可能最终得到任何一个版本在我们的类路径上

    为了解决这个问题,我们必须在自己的pom中明确定义一些Spring依赖项,不依赖于隐式Maven依赖解析机制。这样做会将特定的依赖性放在我们pom的深度0处(因为它是在pom本身中定义的)所以它将优先考虑。以下所有内容属于同一类别,需要直接或为多模块项目明确定义,在父级的dependencyManagement元素中。

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${spring-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${spring-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>${spring-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring-version}</version>
    </dependency>
    

    2.4. spring-security-config and others

    要使用丰富的Spring Security XML命名空间,需要spring-security-config依赖关系:

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${spring-security.version}</version>
        <scope>runtime</scope>
    </dependency>
    

    没有应用程序代码应针对此依赖项进行编译,因此应将其作runtime范围。
    最后,LDAP,ACL,CAS和OpenID支持在Spring Security中有自己的依赖关系。
    spring-security-ldap, spring-security-acl, spring-security-cas and spring-security-openid.

    3.使用快照和里程碑

    Spring提供的自定义Maven存储库中提供了Spring Security里程碑和快照
    有关如何配置这些内容的其他详细信息,请参阅如何使用快照和里程碑

    4。结论

    本文讨论了使用Spring Security与Maven的实际细节。这里介绍的Maven依赖项当然是一些主要的依赖项。还有其他几个值得一提,但是这里做了删减,不过,这应该是在启用Maven的项目中使用Spring的一个很好的起点。

  • 相关阅读:
    剑指offer-二维数组中的查找
    TF-IDF(term frequency–inverse document frequency)
    Java实现中文字符串的排序功能
    当前课程
    【R】资源整理
    CentOS相关
    【转】Setting up SDL Extension Libraries on MinGW
    【转】Setting up SDL Extension Libraries on Visual Studio 2010 Ultimate
    【转】Setting up SDL Extension Libraries on Code::Blocks 12.11
    【转】Setting up SDL Extension Libraries on Visual Studio 2019 Community
  • 原文地址:https://www.cnblogs.com/xjknight/p/10880572.html
Copyright © 2011-2022 走看看