1

我有一个应用程序,我们试图通过授权检查来保护我们的服务层,以确保授权用户具有执行更新的适当权限。我们的第一个简单规则是对象的所有者可以更新对象,因此安全检查将登录用户与对象的所有者进行比较。不幸的是,这不起作用,因为该对象存储在 Neo4j 图形数据库中,该数据库使用 AspectJ 生成存储库级别的对象。当我尝试构建使用@PreAuthorize 保护的服务层的应用程序时,我收到一条错误消息,指出在 AutoWire 链中它无法自动连接 Neo4j 存储库对象......这对我来说很有意义,因为被 AutoWired 的对象实际上是一个接口AspectJ 构建成一个对象供我们使用。

我尝试更新到 Spring-Security 3.1.0,我设置了 aspectj-autoproxy,我尝试将 type="aspectj" 属性添加到我的 global-method-security 定义中,但是编译器将“type”标记为无效属性并且我仍然遇到自动接线问题。

在对模型进行了更多审查之后,我有点担心这种方法注定会失败。各种控制器和其他业务逻辑单元直接调用服务层,我相信这最终会完全绕过 spring-security 代理对象。

有没有办法使用从 AspectJ 自动生成的 Neo4j 存储库对象作为 spring-security 检查中的数据存储库?

有没有办法使用 spring-security 保护服务层?还是直接调用服务层会完全绕过安全层?

4

1 回答 1

0

用户1557993,

手册中有一节是关于这个的,你看过吗?

http://static.springsource.org/spring-data/data-graph/snapshot-site/reference/html/#tutorial_security

问候,

拉斯

于 2012-07-30T07:56:53.123 回答