此版本仍在开发中,尚未被视为稳定版本。如需最新稳定版本,请使用 Spring Security 7.0.4spring-doc.cadn.net.cn

方法安全

<method-security>

此元素是添加对Spring Securitybean进行安全保护的主要手段。 方法可以通过使用注解(定义在接口或类级别)或者通过定义一组切入点来实现安全保护。spring-doc.cadn.net.cn

<method-security> 属性

  • pre-post-enabled
    启用 Spring Security 的预调用和后调用注解 (@PreFilter, @PreAuthorize, @PostFilter, @PostAuthorize) 对于此应用程序上下文。
    默认值为spring-doc.cadn.net.cn

  • secured-enabled
    启用此应用上下文中Spring Security的@Secured注解。
    默认值为spring-doc.cadn.net.cn

  • JSR250启用 使此应用上下文能够使用JSR-250授权注解(@RolesAllowed、@PermitAll、@DenyAll)。 默认值为spring-doc.cadn.net.cn

  • proxy-target-class 如果设置为true,则将使用基于类的代理而不是基于接口的代理。 默认值为"false".spring-doc.cadn.net.cn

  • security-context-holder-strategy-ref 指定用于检索SecurityContext时使用的SecurityContextHolderStrategy。 默认值为SecurityContextHolder.getContextHolderStrategy()返回的值。spring-doc.cadn.net.cn

  • observation-registry-ref 一个对用于ObservationRegistry及相关组件的FilterChain的引用spring-doc.cadn.net.cn

<global-method-security>

此元素是添加对Spring Security bean进行安全保护的主要手段。方法可以通过使用注解(定义在接口或类级别)或通过定义一组子元素点切面,使用AspectJ语法来实现安全保护。spring-doc.cadn.net.cn

<global-method-security> 属性

<global-method-security> 已被弃用,建议使用 <method-security>。 如果需要使用 <global-method-security>,请在构建配置中包含 spring-security-access 依赖。spring-doc.cadn.net.cn

  • access-decision-manager-ref
    方法安全使用与网页安全相同的 AccessDecisionManager 配置,但可以通过此属性进行覆盖。
    默认情况下,会使用一个基于 1 的实现,并包含一个 2 和一个 3spring-doc.cadn.net.cn

  • jsr250-annotations
    指定是否使用JSR-250风格的注解(例如“RolesAllowed”)。这需要在类路径上包含javax.annotation.security类。
    将此设置为true还会向Jsr250Voter添加一个AccessDecisionManager,因此如果您使用自定义实现并希望使用这些注解,请确保这样做。spring-doc.cadn.net.cn

  • metadata-source-ref
    可以提供一个外部MethodSecurityMetadataSource实例,它将优先于其他来源(例如默认注解)。spring-doc.cadn.net.cn

请注意,AspectJ 遵循 Java 的规则,接口上的注解不会被继承。 这意味着定义了安全注解的方法在接口上将不会生效。相反,在使用 AspectJ 时,您必须在类上放置安全注解。spring-doc.cadn.net.cn

  • pre-post-annotations 指定是否为此应用程序上下文启用Spring Security 的预调用和后调用注解 (@PreFilter, @PreAuthorize, @PostFilter, @PostAuthorize)。 默认值为spring-doc.cadn.net.cn

  • proxy-target-class
    如果为true,则将使用基于类的代理而不是基于接口的代理。
    spring-doc.cadn.net.cn

  • run-as-manager-ref
    一个可选的RunAsManager 实现的引用,该实现将被配置的MethodSecurityInterceptor 使用spring-doc.cadn.net.cn

  • secured-annotations 指定是否为该应用上下文启用Spring Security的@Secured注解。 默认值为"禁用".spring-doc.cadn.net.cn

<after-invocation-provider>

此元素可以用于装饰由AfterInvocationProvider命名空间维护的security拦截器使用的<global-method-security>。 您可以在global-method-security元素内部定义零个或多个此类元素,每个元素通过ref属性指向应用程序上下文中的一个AfterInvocationProvider bean 实例。spring-doc.cadn.net.cn

<after-invocation-provider>的父元素

<after-invocation-provider> 属性

<after-invocation-provider> 已弃用,推荐使用 <method-security> 以及 @PostFilter@PostAuthorize。 如果您需要使用 <after-invocation-provider>,请在构建配置中包含 spring-security-access 依赖项,同时计划迁移到现代选项。spring-doc.cadn.net.cn

  • ref 定义了一个引用Spring Bean的元素,该Bean实现了AfterInvocationProvider接口。spring-doc.cadn.net.cn

<pre-post-annotation-handling>

允许完全替换Spring Security的预调用和后调用注解(@PreFilter、@PreAuthorize、@PostFilter、@PostAuthorize)基于表达式的默认处理机制。 仅在这些注解启用时适用。spring-doc.cadn.net.cn

<pre-post-annotation-handling>的父元素

<invocation-attribute-factory>

定义用于从注解方法生成前置和后置调用元数据的 PrePostInvocationAttributeFactory 实例。spring-doc.cadn.net.cn

<invocation-attribute-factory> 已弃用,推荐使用 <method-security> 以及 @PostFilter@PostAuthorize。 如果您需要使用 <invocation-attribute-factory>,请在构建配置中包含 spring-security-access 依赖项,同时计划迁移到现代选项。spring-doc.cadn.net.cn

<invocation-attribute-factory>的父元素

<invocation-attribute-factory> 属性

<post-invocation-advice>

定制PostInvocationAdviceProvider,使用ref作为PostInvocationAuthorizationAdvice元素的值。spring-doc.cadn.net.cn

<post-invocation-advice> 已弃用,推荐使用 <method-security> 以及 @PostFilter@PostAuthorize。 如果您需要使用 <post-invocation-advice>,请在构建配置中包含 spring-security-access 依赖项,同时计划迁移到现代选项。spring-doc.cadn.net.cn

<post-invocation-advice>的父元素

<post-invocation-advice> 属性

<pre-invocation-advice>

定制PreInvocationAuthorizationAdviceVoter,使用ref作为PreInvocationAuthorizationAdviceVoter元素的值。spring-doc.cadn.net.cn

<pre-invocation-advice> 已弃用,推荐使用 <method-security> 以及 @PreFilter@PreAuthorize。 如果您需要使用 <pre-invocation-advice>,请在构建配置中包含 spring-security-access 依赖项,同时计划迁移到现代选项。spring-doc.cadn.net.cn

<pre-invocation-advice>的父元素

<pre-invocation-advice> 属性

使用 Spring 框架保护方法

<protect-pointcut> 而不是使用 @Secured 注解在单个方法或类级别定义安全属性,你可以在服务层中对一组方法和接口的跨切安全约束使用 <protect-pointcut> 元素。 你可以在 命名空间介绍 中找到示例。spring-doc.cadn.net.cn

<protect-pointcut> 属性

  • 访问 访问配置属性列表,适用于所有匹配切点的方法,例如 "ROLE_A, ROLE_B"spring-doc.cadn.net.cn

  • 表达式 AspectJ 表达式,包括execution 关键字。例如,execution(int com.foo.TargetObject.countLength(String))spring-doc.cadn.net.cn

<intercept-methods>

可以在bean定义内部用于向bean添加安全拦截器,并为bean的方法设置访问配置属性spring-doc.cadn.net.cn

<intercept-methods> 属性

  • 使用授权管理器
    使用 AuthorizationManager API 而不是 AccessDecisionManager(默认为 true)spring-doc.cadn.net.cn

  • authorization-manager-ref
    可选的AuthorizationManager bean ID,可以替代默认值(优先级高于use-authorization-manager)spring-doc.cadn.net.cn

  • access-decision-manager-ref 可选的访问决策管理器bean ID,将被创建的方法安全拦截器使用。spring-doc.cadn.net.cn

<intercept-methods>的子元素

<method-security-metadata-source>

创建一个 MethodSecurityMetadataSource 实例spring-doc.cadn.net.cn

<method-security-metadata-source> 已弃用,建议使用 <method-security>。 如果您需要使用 <method-security-metadata-source>,请在构建配置中包含 spring-security-access 依赖项,同时计划迁移到现代选项。spring-doc.cadn.net.cn

<method-security-metadata-source> 属性

  • use-expressions
    启用在<intercept-url>元素的'access'属性中使用表达式,而不是传统的配置属性。
    默认值为'false'。
    如果启用,则每个属性应包含一个单一的布尔表达式。如果该表达式评估为'true',则将授予访问权限。spring-doc.cadn.net.cn

<method-security-metadata-source>的子元素

<protect>

定义一个受保护的方法以及适用于它的访问控制配置属性。 我们强烈建议您不要将“保护”声明与任何由“全局方法安全”提供的服务混合使用。spring-doc.cadn.net.cn

<protect> 属性