当前位置: 首页 > 知识库问答 >
问题:

在Spring SecurityACL中使用AOP

汪弘盛
2023-03-14

我对Spring Security framework非常陌生,尤其是ACL。经过几个小时的阅读,我想我已经掌握了开始保护我的应用程序所需要做的大部分事情。

然而,有些事情让我感到困扰:虽然很容易找到关于如何读取ACL权限的用法描述(例如通过@preauthorize),但当您想要创建和持久化这些权限时,它开始变得混乱。

那我该怎么办呢?专业人士做得怎么样?我是否应该尝试在创建/删除ACL条目的自定义注释上定义切入点?还是我应该用ACL问题“污染”我的代码?

共有1个答案

洪开济
2023-03-14

好吧,经过一周的工作,我现在更明白了,这些东西是如何工作的。

首先,应该尝试使用简单、幼稚的方式使用ACL,直接在每个服务层方法中使用AclService。构建一个抽象很有帮助(基本上是@Service bean中的grantAccess(username,object,permission,...)方法)。

一旦通过ACL写和@preauthorize/@postauthorize/@安全el测试保护了所有内容,那么您就可以开始考虑AOP来清除代码中的所有安全问题。您可以使用ACL编写服务方法列表,并向它们添加建议,以便有一个处理所有安全性的中心位置。

Spring Security ACL非常容易设置和理解,即使是在一个拥有现有用户的现有项目上也是如此(您必须构建一个迁移脚本)。

 类似资料:
  • AOP只能用于Ioc Bean对象, 即从Ioc容器获取的对象, 不是直接new一个对象就能aop的 自定义Aop拦截器,一般情况下别"吃掉"异常, 因为事务拦截器需要检测到异常才能回滚 留意拦截器的先后顺序 示例配置 主模块的IocBy配置 @IocBy(args={ "*js", "ioc/", // 读取ioc/下的js/json配置文件

  • 问题内容: 我正在读一本书,其中谈到在Spring AOP中启用AspectJ支持。 以下是从书中摘录的一段: 要在Spring IoC容器中启用AspectJ注释支持,只需在bean配置文件中定义一个空的XML元素aop:aspectj-autoproxy。然后,Spring将为与AspectJ方面匹配的任何bean自动创建代理。 对于在应用程序设计中不可用或未使用接口的情况,可以依靠CGLIB

  • 我一直试图获得一个简单的web操作来向API发出一个经过身份验证的get请求(我已经从示例代码中删除了实际的url和秘密)。 我已经在本地成功地运行了这一点,但是当我测试web动作时,它只是在记录“调用Axios”之后死亡。 它不会报告错误,我尝试实现一个承诺,认为线程在api响应之前就结束了,但没有效果。有什么线索吗?

  • 问题内容: 我想使用Android Studio使用Gradle构建工具开发应用程序。我无法在上插入存储库和库。我的文件如下: 如何在项目中添加OpenCV? 问题答案: 您可以在Android Studio中轻松完成此操作。 请按照以下步骤将Open CV作为库添加到您的项目中。 libraries在项目主目录下创建一个文件夹。例如,如果您的项目是OpenCVExamples,则将创建一个Ope

  • 我想使用Android Studio开发一个应用程序使用Gradle构建工具。我无法在上插入OpenCV repo和库。我的文件如下所示: 我如何在我的项目中添加OpenCV?

  • 问题内容: 我有一个简单的Entitly类,(和单独类中的字段)。然后,我使用Spring Data()访问数据库(MySql),使用常规ID,查询可以正常工作,无论是Spring生成的查询还是我自己编写的查询。与我没有设法创建正确的查询。我想做的是选择所有id(发生某些情况的EmbeddedId字段之一),这里有一些代码示例,也许有人会知道如何解决它。 实体类: EmbeddedId类: 和存储