41.4 Method Security方法安全性
41.4.1 <global-method-security>
这个元素是为Spring Security beans上的安全方法添加支持的主要手段。可以通过使用注释(在接口或类级别定义)或者通过使用AspectJ语法将一组切入点定义为子元素来保护方法。
<global-method-security> Attributes
- access-decision-manager-ref 方法安全性使用与web安全性相同的AccessDecisionManager配置,但这可以使用此属性覆盖。默认情况下,基于确认AffirmativeBased 的实现用于角色投票者RoleVoter 和授权投票者AuthenticatedVoter。
- authentication-manager-ref 应该用于方法安全性的身份验证管理器的引用。
- jsr250-annotations指定是否要使用JSR-250样式属性(例如“角色化”)。这将需要类路径上的javax.annotation.security类。将此设置为true还会将一个Jsr 250选民添加到访问决策管理器中,因此如果您使用自定义实现并希望使用这些注释,您需要确保这样做。
- metadata-source-ref 可以提供一个外部MethodSecurityMetadataSource实例,该实例将优先于其他源(如默认注释)。
- mode 该属性可以设置为“aspectj”,以指定应该使用AspectJ而不是默认的Spring AOP。安全方法必须与spring-security-aspects模块中的注释安全属性相结合。
值得注意的是,AspectJ遵循Java的规则,即接口上的注释是不可继承的。这意味着在接口上定义安全注释的方法将不会受到保护。相反,在使用AspectJ时,必须将安全性注释放在类上。
- order 允许为方法安全拦截器设置建议“顺序”。
- pre-post-annotations 指定是否应该为此应用程序上下文启用Spring Security的调用前和调用后注释(@ PreFilter,@PreAuthorize,@PostFilter,@PostAuthorize)。默认为“禁用”。
- proxy-target-class 如果为真,将使用基于类的代理,而不是基于接口的代理。
- run-as-manager-ref 对可选运行管理器实现的引用,该实现将由已配置的MethodSecurityInterceptor使用
- secured-annotations 指定是否应该为此应用程序上下文启用Spring Security的@Secured注释。默认为“disabled”。
Child Elements of <global-method-security>
41.4.2 <after-invocation-provider>
此元素可用于修饰由<global-method-security>命名空间维护的安全性拦截器使用的AfterInvocationProvider。您可以在global-method-security元素中定义零个或多个这样的元素,每个元素都有一个引用属性指向您的应用程序上下文中的一个AfterInvocationProvider bean实例。
<after-invocation-provider> Attributes
- ref 定义对实现AfterInvocationProvider的Spring bean的引用。
41.4.3 <pre-post-annotation-handling>
允许完全替换用于处理Spring Security的调用前和调用后注释的默认基于表达式的机制(@ PreFilter、@PreAuthorize、@PostFilter、@PostAuthorize)。仅在启用这些注释时适用。
Child Elements of <pre-post-annotation-handling>
41.4.4 <invocation-attribute-factory>
定义前置调用属性工厂实例,该实例用于从带注释的方法生成调用前和调用后元数据。
<invocation-attribute-factory> Attributes
- ref 定义对spring bean标识的引用
41.4.5 <post-invocation-advice>
使用引用作为<pre-post-annotation-handling>元素的位置授权PostInvocationAuthorizationAdvice 建议来自定义位置授权提供程序PostInvocationAdviceProvider 。
<post-invocation-advice> Attributes
- ref 定义对spring bean标识的引用
41.4.6 <pre-invocation-advice>
使用引用作为<pre-post-annotation-handling>元素的前置位置授权建议投票者PreInvocationAuthorizationAdviceVoter ,自定义前置位置授权建议投票者PreInvocationAuthorizationAdviceVoter 。
<pre-invocation-advice> Attributes
- ref 定义对spring bean标识的引用
41.4.7 Securing Methods using
您可以使用<protect-pointcut>元素跨服务层中的整套方法和接口定义交叉安全约束,而不是使用@Secured注释在单个方法或类的基础上定义安全属性。您可以在名称空间介绍中找到一个示例。
<protect-pointcut> Attributes
- access 访问适用于所有匹配切入点的方法的配置属性列表,例如“角色甲,角色乙”
- expression AspectJ表达式,包括“执行”关键字。例如,“执行(int com . foo . TargetObject . CountLength(String))”(不带引号)。
41.4.8 <intercept-methods>
可以在bean定义中使用,向bean添加安全拦截器,并为bean的方法设置访问配置属性
<intercept-methods> Attributes
- access-decision-manager-ref 创建的方法安全拦截器使用的可选访问决策管理器AccessDecisionManager bean标识。
Child Elements of <intercept-methods>
41.4.9 <method-security-metadata-source>
创建MethodSecurityMetadataSource 实例
<method-security-metadata-source> Attributes
- id 一个bean标识符,用于引用上下文中其他地方的bean。
- use-expressions 允许在<intercept-url >元素的“access”属性中使用表达式,而不是传统的配置属性列表。默认为“false”。如果启用,每个属性应该包含一个布尔表达式。如果表达式计算结果为“true”,将授予访问权限。
Child Elements of <method-security-metadata-source>
41.4.10 <protect>
定义受保护的方法和应用于该方法的访问控制配置属性。我们强烈建议您不要将“保护”声明与任何提供“global-method-security”的服务混在一起。
<protect> Attributes
- access 访问适用于该方法的访问配置属性列表,例如“角色A,角色B”。
- method 方法名
41.4 Method Security方法安全性的更多相关文章
- Spring Security方法级别授权使用介绍
		1.简介 简而言之,Spring Security支持方法级别的授权语义. 通常,我们可以通过限制哪些角色能够执行特定方法来保护我们的服务层 - 并使用专用的方法级安全测试支持对其进行测试. 在本文中 ... 
- Factory Method 工厂方法模式
		Factory method工厂方法模式是一种实现了“工厂”概念的面向对象设计模式.就像其他创建型模式一样,它也是处理在不指定对象具体类型的情况下创建对象的问题.工厂方法模式的实质是“定义一个创建对象 ... 
- (转)Java.lang.reflect.Method invoke方法 实例
		背景:今天在项目中用到Method 的invoke方法,但是并不理解,查完才知道,原来如此! import java.lang.reflect.Method; /** * Java.lang.refl ... 
- Spring Security 4 Method security using @PreAuthorize,@PostAuthorize, @Secured, EL--转
		原文地址:http://websystique.com/spring-security/spring-security-4-method-security-using-preauthorize-pos ... 
- java.lang.reflect.Method.getAnnotation()方法示例【通过反射获取到方法对象再获取方法对象上的注解信息】
		转: java.lang.reflect.Method.getAnnotation()方法示例 java.lang.reflect.Method.getAnnotation(Class <T&g ... 
- java.lang.reflect.Method.getAnnotation()方法示例
		转: java.lang.reflect.Method.getAnnotation()方法示例 作者: 初生不惑 Java技术QQ群:227270512 / Linux QQ群:479429477 ... 
- 错误:Attempt to resolve method: [XXX方法] on undefined variable or class name: [XXX类]的解决(IDEA打包jar问题)
		问题: 使用JMeter调用jar包的时候,报错误信息Typed variable declaration : Attempt to resolve method:[XXX方法] on undefin ... 
- Spring Security(二十二):6.4 Method Security
		From version 2.0 onwards Spring Security has improved support substantially for adding security to y ... 
- Spring Security(十七):5.8 Method Security
		From version 2.0 onwards Spring Security has improved support substantially for adding security to y ... 
随机推荐
- PHP中使用 TUS 协议来实现可恢复文件上传
			曾经尝试过用PHP上传大文件吗?想知道您是否可以从上次中断的地方继续上传,而不会在遇到任何中断的情况下再次重新上传整个数据?如果您觉得这个场景很熟悉,请接着往下阅读. 文件上传是我们几乎所有现代Web ... 
- 软件测试必备技能,带你学习jmeter!
			一:jmeter用户变量设置: 1.在线程组鼠标右击--添加--配置元件-用户定义的变量, 2.根据业务需求自定义变量的名称,添加需要的变量和对应的值 3.在脚本对应位置添加参数 二:文件参数化: 两 ... 
- intellij IDEA导入maven项目
			一.导入maven项目 1.打开intellij idea,点击File(如下图1),然后点击Open(如下图2) 
- MySQL中change与modify的用法与区别
			浅析MySQL中change与modify的区别 MySQL版本 show variables like 'version'; 表结构 desc student; 修改表 例如:修改表studen ... 
- lua判断字符串包含另一个字符串
			lua判断字符串包含另一个字符串 --string.find("元字符串","模式字符串") 如下: print(string.find("CCBWe ... 
- Java Web(5)-Servlet详解(上)
			一.Servlet 1. 什么是Servlet Servlet 是 JavaEE 规范之一,规范就是接口 Servlet 就 JavaWeb 三大组件之一,三大组件分别是:Servlet 程序.Fil ... 
- LQB2013A03振兴中华
			最近状态出了点问题呜呜呜,可能是天有点热吧加上有一点点不太舒服,,,稳住啊! 明显一个递归(但是就是不会写) 递归:(一般这种找有多少个的题,返回值都是int) 首先找变化的东西当作参数.(本题是坐标 ... 
- 02_HTML03
			学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"软件测试"获取视频和教程资料! b站在线视频 HTML ... 
- Python os.lchflags() 方法
			概述 os.lchflags() 方法用于设置路径的标记为数字标记,类似 chflags(),但是没有软链接.高佣联盟 www.cgewang.com 只支持在 Unix 下使用. 语法 lchfla ... 
- Python File next() 方法
			概述 next() 方法在文件使用迭代器时会使用到,在循环中,next()方法会在每次循环中调用,该方法返回文件的下一行,如果到达结尾(EOF),则触发 StopIteration高佣联盟 www.c ... 
