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方法安全性的更多相关文章

  1. Spring Security方法级别授权使用介绍

    1.简介 简而言之,Spring Security支持方法级别的授权语义. 通常,我们可以通过限制哪些角色能够执行特定方法来保护我们的服务层 - 并使用专用的方法级安全测试支持对其进行测试. 在本文中 ...

  2. Factory Method 工厂方法模式

    Factory method工厂方法模式是一种实现了“工厂”概念的面向对象设计模式.就像其他创建型模式一样,它也是处理在不指定对象具体类型的情况下创建对象的问题.工厂方法模式的实质是“定义一个创建对象 ...

  3. (转)Java.lang.reflect.Method invoke方法 实例

    背景:今天在项目中用到Method 的invoke方法,但是并不理解,查完才知道,原来如此! import java.lang.reflect.Method; /** * Java.lang.refl ...

  4. Spring Security 4 Method security using @PreAuthorize,@PostAuthorize, @Secured, EL--转

    原文地址:http://websystique.com/spring-security/spring-security-4-method-security-using-preauthorize-pos ...

  5. java.lang.reflect.Method.getAnnotation()方法示例【通过反射获取到方法对象再获取方法对象上的注解信息】

    转: java.lang.reflect.Method.getAnnotation()方法示例 java.lang.reflect.Method.getAnnotation(Class <T&g ...

  6. java.lang.reflect.Method.getAnnotation()方法示例

    转: java.lang.reflect.Method.getAnnotation()方法示例 作者: 初生不惑 Java技术QQ群:227270512 / Linux QQ群:479429477   ...

  7. 错误: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 ...

  8. Spring Security(二十二):6.4 Method Security

    From version 2.0 onwards Spring Security has improved support substantially for adding security to y ...

  9. Spring Security(十七):5.8 Method Security

    From version 2.0 onwards Spring Security has improved support substantially for adding security to y ...

随机推荐

  1. PHP中使用 TUS 协议来实现可恢复文件上传

    曾经尝试过用PHP上传大文件吗?想知道您是否可以从上次中断的地方继续上传,而不会在遇到任何中断的情况下再次重新上传整个数据?如果您觉得这个场景很熟悉,请接着往下阅读. 文件上传是我们几乎所有现代Web ...

  2. 软件测试必备技能,带你学习jmeter!

    一:jmeter用户变量设置: 1.在线程组鼠标右击--添加--配置元件-用户定义的变量, 2.根据业务需求自定义变量的名称,添加需要的变量和对应的值 3.在脚本对应位置添加参数 二:文件参数化: 两 ...

  3. intellij IDEA导入maven项目

    一.导入maven项目 1.打开intellij idea,点击File(如下图1),然后点击Open(如下图2)

  4. MySQL中change与modify的用法与区别

    浅析MySQL中change与modify的区别   MySQL版本 show variables like 'version'; 表结构 desc student; 修改表 例如:修改表studen ...

  5. lua判断字符串包含另一个字符串

    lua判断字符串包含另一个字符串 --string.find("元字符串","模式字符串") 如下: print(string.find("CCBWe ...

  6. Java Web(5)-Servlet详解(上)

    一.Servlet 1. 什么是Servlet Servlet 是 JavaEE 规范之一,规范就是接口 Servlet 就 JavaWeb 三大组件之一,三大组件分别是:Servlet 程序.Fil ...

  7. LQB2013A03振兴中华

    最近状态出了点问题呜呜呜,可能是天有点热吧加上有一点点不太舒服,,,稳住啊! 明显一个递归(但是就是不会写) 递归:(一般这种找有多少个的题,返回值都是int) 首先找变化的东西当作参数.(本题是坐标 ...

  8. 02_HTML03

    学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"软件测试"获取视频和教程资料! b站在线视频 HTML ...

  9. Python os.lchflags() 方法

    概述 os.lchflags() 方法用于设置路径的标记为数字标记,类似 chflags(),但是没有软链接.高佣联盟 www.cgewang.com 只支持在 Unix 下使用. 语法 lchfla ...

  10. Python File next() 方法

    概述 next() 方法在文件使用迭代器时会使用到,在循环中,next()方法会在每次循环中调用,该方法返回文件的下一行,如果到达结尾(EOF),则触发 StopIteration高佣联盟 www.c ...