对于最新的稳定版本,请使用 Spring Security 6.5.3spring-doc.cadn.net.cn

方法安全性

<方法安全>

此元素是在 Spring Security Bean 上添加对保护方法的支持的主要方法。 可以通过使用注释(在接口或类级别定义)或定义一组切入点来保护方法。spring-doc.cadn.net.cn

<method-security> 属性

  • 启用预后为此应用程序上下文启用 Spring Security 的调用前和调用后注释(@PreFilter、@PreAuthorize、@PostFilter、@PostAuthorize)。 默认为“true”。spring-doc.cadn.net.cn

  • 支持安全为此应用程序上下文启用 Spring Security 的@Secured注释。 默认为“false”。spring-doc.cadn.net.cn

  • 启用 JSR250为此应用程序上下文启用 JSR-250 授权注释(@RolesAllowed、@PermitAll、@DenyAll)。 默认为“false”。spring-doc.cadn.net.cn

  • 代理目标类如果为 true,则将使用基于类的代理而不是基于接口的代理。 默认为“false”。spring-doc.cadn.net.cn

  • 安全上下文-持有者-策略-引用指定检索 SecurityContext 时要使用的 SecurityContextHolderStrategy。 默认为 SecurityContextHolder.getContextHolderStrategy() 返回的值。spring-doc.cadn.net.cn

<全局方法安全>

此元素是在 Spring Security Bean 上添加对保护方法的支持的主要方法。 可以通过使用注释(在接口或类级别定义)或使用 AspectJ 语法将一组切入点定义为子元素来保护方法。spring-doc.cadn.net.cn

<global-method-security> 属性

  • 访问决策管理器-ref方法安全性使用相同的AccessDecisionManager配置为 Web 安全,但可以使用此属性覆盖。 默认情况下,AffirmativeBased 实现用于 RoleVoter 和 AuthenticatedVoter。spring-doc.cadn.net.cn

  • jsr250 注释指定是否使用 JSR-250 样式属性(例如“RolesAllowed”)。 这将需要类路径上的 javax.annotation.security 类。 将此设置为 true 还会添加一个Jsr250VoterAccessDecisionManager,因此,如果您使用的是自定义实现并想要使用这些注释,则需要确保执行此作。spring-doc.cadn.net.cn

  • 元数据源引用外部MethodSecurityMetadataSource实例将优先于其他源(例如默认注释)。spring-doc.cadn.net.cn

  • 模式可以将此属性设置为“aspectj”,以指定应使用 AspectJ 而不是默认的 Spring AOP。 安全方法必须与AnnotationSecurityAspectspring-security-aspects模块。spring-doc.cadn.net.cn

需要注意的是,AspectJ遵循Java的规则,即接口上的注释不会被继承。 这意味着在接口上定义 Security 注释的方法将不会受到保护。 相反,在使用 AspectJ 时,您必须将 Security 注释放在类上。spring-doc.cadn.net.cn

  • 前置后注释指定是否应为此应用程序上下文启用 Spring Security 的调用前和调用后注释(@PreFilter、@PreAuthorize、@PostFilter、@PostAuthorize)的使用。 默认为“disabled”。spring-doc.cadn.net.cn

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

  • 作为经理-ref 运行对可选RunAsManager实现,该实现将由配置的MethodSecurityInterceptorspring-doc.cadn.net.cn

  • 安全注释指定是否应为此应用程序上下文启用 Spring Security 的@Secured注释的使用。 默认为“disabled”。spring-doc.cadn.net.cn

<调用后提供程序>

此元素可用于装饰AfterInvocationProvider供由<global-method-security>Namespace。 您可以在global-method-security元素,每个元素都有一个ref属性指向AfterInvocationProviderbean 实例。spring-doc.cadn.net.cn

<after-invocation-provider> 的父元素

<after-invocation-provider> 属性

<注释前处理前>

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

<前后注释处理>的父元素

<调用属性工厂 >

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

<invocation-attribute-factory> 的父元素

<invocation-attribute-factory>属性

<调用后建议>

自定义PostInvocationAdviceProvider将 ref 作为PostInvocationAuthorizationAdvice对于 <pre-post-annotation-handling> 元素。spring-doc.cadn.net.cn

<post-invocation-advice> 的父元素

<post-invocation-advice>属性

<预调用建议>

自定义PreInvocationAuthorizationAdviceVoter将 ref 作为PreInvocationAuthorizationAdviceVoter对于 <pre-post-annotation-handling> 元素。spring-doc.cadn.net.cn

<pre-invocation-advice> 的父元素

<pre-invocation-advice>属性

使用

<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

<截距方法>

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

<intercept-methods> 属性

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

  • 授权经理-ref要使用的可选 AuthorizationManager Bean ID 而不是默认值(取代 use-authorization-manager)spring-doc.cadn.net.cn

  • 访问决策管理器-ref可选的 AccessDecisionManager Bean ID,供创建的方法安全拦截器使用。spring-doc.cadn.net.cn

<intercept-methods> 的子元素

<方法安全元数据源>

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

<method-security-metadata-source> 属性

  • 使用表达式允许在<intercept-url>元素的“access”属性中使用表达式,而不是传统的配置属性列表。 默认为“false”。 如果启用,则每个属性应包含一个布尔表达式。 如果表达式的计算结果为“true”,则将授予访问权限。spring-doc.cadn.net.cn

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

<保护>

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

<保护>属性