【问题标题】:Applying @PreAuthorize to a method contained in a Spring Roo-generated ITD (*.aj)将 @PreAuthorize 应用于 Spring Roo 生成的 ITD (*.aj) 中包含的方法
【发布时间】:2014-03-18 20:13:29
【问题描述】:

我想将 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);
  }

这可能吗?如果有怎么办?

【问题讨论】:

  • 推荐的自定义代码方式是push in code然后自定义,为什么不push in updateCurriculum()方法呢?

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


【解决方案1】:

有一种方法可以使用 Spring Roo 实现这一点:See detailed comment here.

引用评论

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

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

  2. Spring Roo 将创建三个文件:ApplicationPermissionEvaluator、ApplicationPermissionEvaluator_Roo_PermissionEvaluator、 applicationContext-security-permissionEvaluator.xml。

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

  4. Spring Roo 会将附加条件附加到 @PreAuthorize,例如“或有权限(#myDomanObject, 'MyService:deleteMyDomainObjectIsAllowed')"

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多