将@PreAuthorize应用于Spring Roo生成的ITD(* .aj)中包含的方法

时间:2014-03-18 20:13:30

标签: spring spring-security aspectj spring-roo spring-aop

我想将Spring Security @PreAuthorize 注释应用于以下Spring Roo ITD 中定义的服务方法(不执行推送重构)方法):

privileged aspect CurriculumServiceImpl_Roo_Service {

  declare @type: CurriculumServiceImpl: @Service;

  declare @type: CurriculumServiceImpl: @Transactional;


  public Curriculum CurriculumServiceImpl.updateCurriculum(Curriculum curriculum) {
    return curriculumRepository.save(curriculum);
  }

这可能吗?如果是这样的话?

1 个答案:

答案 0 :(得分:1)

使用Spring Roo可以实现这一目标:See detailed comment here.

引用评论

  

如果您想尝试并使用PermissionEvaluator,请按照下列步骤操作   (最好是在测试项目上)。

     
      
  1. 运行Roo命令“permissionEvaluator --package {要添加PermissionEvaluator的包}”(安全性必须是   首先安装)

  2.   
  3. Spring Roo将创建三个文件:ApplicationPermissionEvaluator,ApplicationPermissionEvaluator_Roo_PermissionEvaluator,   的applicationContext-安全permissionEvaluator.xml。

  4.   
  5. 将userPermissionEvalutor = true添加到要保护的服务的@RooService注释中。

  6.   
  7. Spring Roo会为@PreAuthorize添加额外的标准,例如“或者hasPermission(#myDomanObject,   'MyService:deleteMyDomainObjectIsAllowed')“

  8.   
  9. 添加/更新方法hasPermission(Authentication authentication,Object targetObject,Object permission))   ApplicationPermissionEvaluator

  10.   

顺便说一下,在重构中执行推送不是我的应用程序的解决方案。 走Roo 并依赖Roo功能总是更好。