|
对于最新的稳定版本,请使用 Spring Security 7.0.4! |
方法安全
<method-security>
此元素是添加对Spring Securitybean进行安全保护的主要手段。 方法可以通过使用注解(定义在接口或类级别)或者通过定义一组切入点来实现安全保护。
<method-security> 属性
-
pre-post-enabled
启用 Spring Security 的预调用和后调用注解 (@PreFilter, @PreAuthorize, @PostFilter, @PostAuthorize) 对于此应用程序上下文。
默认值为
-
secured-enabled
启用此应用上下文中Spring Security的@Secured注解。
默认值为
-
JSR250启用 使此应用上下文能够使用JSR-250授权注解(@RolesAllowed、@PermitAll、@DenyAll)。 默认值为
-
模式 如果设置为"aspectj",则使用AspectJ拦截方法调用。
-
proxy-target-class 如果设置为true,则将使用基于类的代理而不是基于接口的代理。 默认值为"false".
-
security-context-holder-strategy-ref 指定用于检索SecurityContext时使用的SecurityContextHolderStrategy。 默认值为SecurityContextHolder.getContextHolderStrategy()返回的值。
-
observation-registry-ref 一个对用于
ObservationRegistry及相关组件的FilterChain的引用
<global-method-security>
此元素是添加对Spring Security bean进行安全保护的主要手段。方法可以通过使用注解(定义在接口或类级别)或通过定义一组子元素点切面,使用AspectJ语法来实现安全保护。
<global-method-security> 属性
-
access-decision-manager-ref
方法安全使用与网页安全相同的AccessDecisionManager配置,但可以通过此属性进行覆盖。
默认情况下,会使用一个基于1的实现,并包含一个2和一个3。
-
authentication-manager-ref 用于方法安全性的
AuthenticationManager参考。
-
jsr250-annotations
指定是否使用JSR-250风格的注解(例如“RolesAllowed”)。这需要在类路径上包含javax.annotation.security类。
将此设置为true还会向Jsr250Voter添加一个AccessDecisionManager,因此如果您使用自定义实现并希望使用这些注解,请确保这样做。
-
metadata-source-ref
可以提供一个外部MethodSecurityMetadataSource实例,它将优先于其他来源(例如默认注解)。
-
mode 此属性可以设置为
请注意,AspectJ 遵循 Java 的规则,接口上的注解不会被继承。 这意味着定义了安全注解的方法在接口上将不会生效。相反,在使用 AspectJ 时,您必须在类上放置安全注解。
-
order 允许为方法安全拦截器设置建议的顺序。
-
pre-post-annotations 指定是否为此应用程序上下文启用Spring Security 的预调用和后调用注解 (@PreFilter, @PreAuthorize, @PostFilter, @PostAuthorize)。 默认值为
-
proxy-target-class
如果为true,则将使用基于类的代理而不是基于接口的代理。
-
run-as-manager-ref
一个可选的RunAsManager实现的引用,该实现将被配置的MethodSecurityInterceptor使用
-
secured-annotations 指定是否为该应用上下文启用Spring Security的@Secured注解。 默认值为"禁用".
<after-invocation-provider>
<pre-post-annotation-handling>
<invocation-attribute-factory>
<post-invocation-advice>
<pre-invocation-advice>
使用 Spring 框架保护方法
<protect-pointcut>
而不是使用 @Secured 注解在单个方法或类级别定义安全属性,你可以在服务层中对一组方法和接口的跨切安全约束使用 <protect-pointcut> 元素。
你可以在 命名空间介绍 中找到示例。