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 ...
随机推荐
- 手动造轮子——为Ocelot集成Nacos注册中心
前言 近期在看博客的时候或者在群里看聊天的时候,发现很多都提到了Ocelot网关的问题.我之前也研究过一点,网关本身是一种通用的解决方案,主要的工作就是拦截请求统一处理,比如认证.授权.熔断. ...
- Webpack前世今生
在正式介绍Webpack之前,先给大家说明一下前端为什么需要模块化 1.为什么需要模块化 1.1JS原始功能 在网页开发的早期,js制作作为一种脚本语言,做一些简单的表单验证或动画实现等,那个时候代码 ...
- Module not found: Error: Can't resolve './style':配置 extensions 的坑
ERROR in ./src/index.js Module not found: Error: Can't resolve './style' in 'D:\gitcode\github\learn ...
- Squeeze-and-Excitation Networks(SENet)详解
一.SENet简介 Squeeze-and-Excitation Networks(SENet)是由自动驾驶公司Momenta在2017年公布的一种全新的图像识别结构,它通过对特征通道间的相关性进行建 ...
- 如何在sed中使用变量,两种方法
第一 在sed条件中是不认识变量取值的 sed '/$x/d' test 所以要想它能够识别变量 sed "/$x/d/" test 方法简单就是把"单引号"变 ...
- emacs 中文手册 命令行精简版
man emacs 算是很全了吧.......一些不常用的没有写,不过我感觉没几个没写的.(c-x c-c退出emacs)c-v 下一屏m-v 上一屏c-l 重绘 光标定在屏幕中央(将光标所在的位 ...
- 判断js中数组是否包含某值
可以用数组的includes函数判断数组中是否存在某个值.
- PHP chr() 函数
实例 从不同 ASCII 值返回字符: <?php高佣联盟 www.cgewang.comecho chr(52) . "<br>"; // Decimal va ...
- dsu on tree详解
这个算法还是挺人性化的,没有什么难度 就是可能看起来有点晕什么的. 大体 思想是 利用重链刨分来优化子树内部的查询. 考虑一个问题要对每个子树都要询问一次.我们暴力显然是\(n^2\)的. 考虑一下优 ...
- 基于asp.net core 从零搭建自己的业务框架(二)
前言 对于项目的迭代,如何降低复杂性的要求高于性能以及技术细节的 一个易用的项目,才能迭代到比拼性能,最后拼刺刀的阶段 传统单体项目,都是传统三层,直接请求响应的模式,这类称为Rpc模式,易用性上非常 ...