此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Security 6.4.1! |
方法安全性
<方法安全性>
此元素是添加对 Spring Security bean 上保护方法的支持的主要方法。 可以通过使用 Comments(在接口或类级别定义)或定义一组切入点来保护方法。
<method-security> 属性
-
启用 pre-post为此应用程序上下文启用 Spring Security 的调用前和调用后注释(@PreFilter、@PreAuthorize、@PostFilter @PostAuthorize)。 默认为 “true”。
-
安全已启用为此应用程序上下文启用 Spring Security 的 @Secured 注释。 默认为 “false”。
-
已启用 JSR250为此应用程序上下文启用 JSR-250 授权注释(@RolesAllowed、@PermitAll @DenyAll)。 默认为 “false”。
-
模式如果设置为 “aspectj”,则使用 AspectJ 拦截方法调用。
-
代理目标类如果为 true,则将使用基于类的代理,而不是基于接口的代理。 默认为 “false”。
-
security-context-holder-strategy-ref (安全上下文持有者策略引用)指定检索SecurityContext时要使用的SecurityContextHolderStrategy。 默认为 SecurityContextHolder.getContextHolderStrategy() 返回的值。
-
观察注册表引用对
ObservationRegistry
用于FilterChain
和相关组件
<全局方法安全性>
此元素是添加对 Spring Security bean 上保护方法的支持的主要方法。 可以通过使用注释(在接口或类级别定义)或使用 AspectJ 语法将一组切入点定义为子元素来保护方法。
<global-method-security> 属性
-
访问决策管理器引用方法安全性使用相同的
AccessDecisionManager
配置为 Web 安全性,但可以使用此属性覆盖此属性。 默认情况下,AffirmativeBased 实现用于 RoleVoter 和 AuthenticatedVoter。
-
身份验证管理器引用对
AuthenticationManager
这应该用于方法安全性。
-
jsr250 注释指定是否使用 JSR-250 样式属性(例如,“RolesAllowed”)。 这将需要 Classpath 上的 javax.annotation.security 类。 将此设置为 true 还会添加
Jsr250Voter
到AccessDecisionManager
,因此,如果您使用的是自定义实现并希望使用这些注解,则需要确保执行此作。
-
元数据源引用外部
MethodSecurityMetadataSource
实例将优先于其他源(例如默认注释)。
-
模式这个属性可以设置为“aspectj”,以指定应该使用 AspectJ 而不是默认的 Spring AOP。 安全方法必须与
AnnotationSecurityAspect
从spring-security-aspects
模块。
需要注意的是,AspectJ 遵循 Java 的规则,即接口上的注解不被继承。 这意味着在接口上定义 Security 注释的方法将不安全。 相反,在使用 AspectJ 时,您必须将 Security 注释放在类上。
-
次序允许为方法安全拦截器设置通知 “order”。
-
pre-post-annotations 注解指定是否应为此应用程序上下文启用 Spring Security 的调用前和调用后注释(@PreFilter、@PreAuthorize、@PostFilter @PostAuthorize)。 默认为 “disabled”。
-
代理目标类如果为 true,则将使用基于类的代理,而不是基于接口的代理。
-
作为管理器引用运行对可选
RunAsManager
实现,该 API 将由配置的MethodSecurityInterceptor
-
安全注释指定是否应为此应用程序上下文启用 Spring Security 的 @Secured 注释。 默认为 “disabled”。