【问题标题】:AOP vs Spring SecurityAOP 与 Spring 安全性
【发布时间】:2016-11-16 09:17:24
【问题描述】:

下面这些有什么区别...

@org.aspectj.lang.annotation.Aspect
public class Test {
   //@Pointcut, @Around etc etc..
}

public aspect Test {

}

什么是更好的用于安全之间..

  • Spring 安全 &
  • AOP

在春季应用中

【问题讨论】:

    标签: java spring aop aspectj spring-aop


    【解决方案1】:

    查看here

    Aspect 声明由 org.aspectj.lang.annotation.Aspect 注释。声明:

     @Aspect
     public class Foo {}
    

    相当于:

     public aspect Foo {}
    

    注意:第一个是spring检测到的。后者需要 AspectJ。

    关于第二个问题。比较是不可能的。因为第一个是框架,后一个是范式。 Spring security 使用 AOP 来保护方法调用,AOP 本身并不是一种安全机制。当然,除非您打算使用 AOP 来构建自己的安全性,否则就是在重新发明轮子。

    【讨论】:

    • 这意味着如果我想自己定制我的安全部分,那么 Core AOP 会更好。要获得有序代码,那么 Spring Security Framework 就可以了,不是吗?
    • Spring 是一套成熟的安全套装......它可以支持各种用例,所以我建议你查看文档。要创建功能安全性,您需要的不仅仅是 AOP,AOP 几乎不是拦截方法调用的一种方式。保护需要更多。您可以自己创建过滤器、提供程序、控制器……但是为什么呢? Spring Security 用于保护各种项目,包括金融系统。
    • 好的,我当然会阅读 Spring Security Doc。顺便说一句,Struts 呢!我可以在我现有的 struts1 项目中使用 AOP 吗?
    • @M.A.Khomeni 我不熟悉struts,但是AOP 是一种Java 类的东西,所以你应该可以在那里应用它!并且不要忘记标记已接受的答案!
    【解决方案2】:

    使用@Aspect 注释标记您的课程Test 将使您的课程成为一个方面,这意味着Spring 的ApplicationContextBeanFactory 现在将读取并扫描您的课程以查找advicespointcutsjoinpoints ,您可以定义额外的cross-cutting functinality(与业务逻辑分开的功能),您希望在某个事件(例如方法调用之前、方法调用之后、方法引发异常之后等)执行它。

    AOP (Aspect-oriented programming) 是 spring 遵循的设计模式,为您提供横切功能,而 Spring Security 是完整 spring 框架的一部分,您可以使用它来保护您的应用程序

    Spring Security 在内部使用 AOP 和过滤器来完成它的工作。

    【讨论】:

      【解决方案3】:

      第一个是注解式语法,Spring AOP 和纯 AspectJ 都可以使用,第二个是原生 AspectJ 语法,只适用于纯 AspectJ,不适用于基于代理的 Spring AOP。但是纯 AspectJ(由 AspectJ 编译器编译)也可以合并到 Spring 项目中,如 Spring 手册章节 Using AspectJ with Spring applications 中所述。

      至于哪种方法更适合实现安全性,这是一个哲学问题,只要你不详细描述你的用例,但我的一般建议是:如果你仍然使用 Spring 框架,也使用其安全机制。如果您只是因为想使用 Spring AOP 而考虑使用 Spring,我宁愿建议您远离仅用于单一目的的大型框架,并在您的 POJO 应用程序中使用纯 AspectJ 来实现安全性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-12-27
        • 1970-01-01
        • 2013-07-29
        • 2014-01-30
        • 2010-12-09
        • 2014-10-23
        • 1970-01-01
        相关资源
        最近更新 更多