2012-07-27 51 views
1

我有一个应用程序,我们试图通过授权检查来保护我们的服务层,以确保授权用户具有执行更新的适当权限。我们的第一条简单规则是对象的所有者可以更新对象,因此安全检查会将登录用户与对象的所有者进行比较。不幸的是,这不起作用,因为对象存储在使用AspectJ生成存储库级别对象的Neo4j图形数据库中。当我尝试构建具有用@PreAuthorize保护的服务层的应用程序时,我得到一个错误,指出在AutoWire链中它不能AutoWire Neo4j存储库对象...这对我来说很有意义,因为对象是AutoWired实际上是一个接口AspectJ构建成我们使用的对象。我试图更新到Spring-Security 3.1.0,我有aspectj-autoproxy设置,我试着在我的全局方法安全性定义中添加type =“aspectj”属性,但编译器将'type'一个无效的属性,我仍然遇到AutoWiring问题。Spring Security和AspectJ Neo4j存储库自动装配

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

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

有没有办法使用spring-security来保护服务层?或者将直接调用服务层绕过安全层?

回答