spring - spring security内部使用AOP吗?

标签 spring spring-security aop spring-aop

我听说 AOP 可以用于分离交叉方面,例如安全性、事务和日志记录等。
所以,我想了解一下spring security内部是否使用AOP?

最佳答案

是的,Spring Security内部使用AOP。例如,它用于全局方法安全。全局方法安全用于对某些方法(例如,在服务层)应用安全检查。

您可以在 GlobalMethodSecurityBeanDefinitionParser 中找到以下代码,它是与全局方法安全性相关的 Spring Security 基础结构的一部分:

    if (useAspectJ) {
        BeanDefinitionBuilder aspect =
            BeanDefinitionBuilder.rootBeanDefinition("org.springframework.security.access.intercept.aspectj.aspect.AnnotationSecurityAspect");
        aspect.setFactoryMethod("aspectOf");
        aspect.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
        aspect.addPropertyValue("securityInterceptor", interceptor);
        String id = pc.getReaderContext().registerWithGeneratedName(aspect.getBeanDefinition());
        pc.registerBeanComponent(new BeanComponentDefinition(aspect.getBeanDefinition(), id));
    } else {
        registerAdvisor(pc, interceptor, metadataSource, source, element.getAttribute(ATT_ADVICE_ORDER));
        AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(pc, element);
    }

几乎每一行都提到了 AOP。

有关全局方法安全性的更多信息可以在这里找到,例如,https://docs.spring.io/spring-security/site/docs/3.0.x/reference/ns-config.html在这里 https://spring.io/blog/2013/07/04/spring-security-java-config-preview-method-security/

关于spring - spring security内部使用AOP吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46056679/

相关文章:

spring - 使用 ExtJS 和 Spring 构建应用程序

java - JSR-303 bean 验证 - 避免绕过字段

java - 将 X509 值传递到 LDAP 服务器

c# - Autofac.Extras.DynamicProxy2 v3.0.6 出现异常

java - 无法使用休息服务

java - Spring SAML : updating Metadata Provider does not update signing certificates used

java - AWS 源代码错误?

spring-security - 将 security=none 应用于上下文根和静态资源 : spring security version 3. 1

java - 为 Spring MVC/AOP 应用程序实现动态菜单

java - CDI 拦截器和 memcache