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