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

如何使用Spring AOP实现基于注释的安全性?

公孙慎之
2023-03-14
@HasPermission(operation=SecurityOperation.ACTIVITY_EDIT, object="#act")
public Activity updateActivity(Activity act)
{
   ...
}
  • 如何从注释中提取操作和对象参数?
  • 如何解析对象定义中的SpEL表达式并将对象作为'act'参数传递?

共有1个答案

颜君浩
2023-03-14

我知道这是一个很晚的答案,但是在我们将一些JavaEE项目迁移到Spring之后,我们基于AspectJ建立了一些基本的安全模型:

首先,我们使用自定义@OperationAuthorization注释我们的服务方法:

@OperationAuthorization
public ListOfUserGroupsTo getUserGroupsByClientId(Integer clientId) throws GenericException {
    return userGroupRepository.getAllUserGroupsForClient(clientId);
}

然后我们有一个带有@Aspect&@组件注释的类,它拦截带有特定注释的方法:

@Aspect 
@Component
public class AuthorizationAspect {

@Autowired
AuthorizationService authorizationService;

@Before(value = "@annotation(ch.avelon.alcedo.authorization.annotations.OperationAuthorization)")
public void before(JoinPoint joinPoint) throws Throwable {
    Object[] args = joinPoint.getArgs();
    Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();

    authorizationService.checkOperationAuthorization(method, args);
}
 类似资料:
  • 我试图在没有任何XML的情况下设置Spring AOP。我想启用

  • 我们试图将AspectJ实现到现有软件中,以便在进行服务调用后执行一些代码。 注: null 删除了批注,该批注可以正确地自动连接所有内容,但我们的@Aspect从未被调用。 通过声明在批注中添加了CGLIB支持,但无效。 我们尝试直接从Spring中遵循以下文档:@EnableAspectJAutoproxy Javadoc 这似乎是AspectJ处理自动连线依赖关系的代理机制的一个问题。 为什

  • 问题内容: 在StackOverflow上有很多类似的问题,但是我找不到任何答案:( 我有像这样的web.xml: 并尝试使用注释配置方法安全性。如我所见,在我看来,它必须由放置在与其他组件相同的上下文中。所以我有以下内容: 和: 添加所有控制器后停止工作的问题。我在日志中有以下内容: 当我删除此元素时,一切正常。如果我将其添加到-没有任何变化。似乎没有使用它,因为任何人都可以使用带有(或任何其他

  • 我有一个类和一个注释 我想写一个 aspectj 切入点,它将捕获所有具有 value=true 的注释方法注释的方法。我该怎么做?

  • 有了这个jdk代码在, java编译器只有注释声明,它足够智能,可以检测错误(编译时): 在下面的问题代码中。 的注释声明刚刚编译为, 它只不过是一个。 所以 语法是否帮助java编译器在编译时检测上述错误?

  • 问题内容: 我正在使用OAuth2.0在PHP中设计API。我的最终目标是用javascript(使用AngularJS)构建可直接访问此API的前端应用程序。我知道,传统上无法用javascript保护交易,因此直接访问API是不可行的。前端需要与服务器代码进行通信,而服务器代码又直接与API进行通信。但是,在研究OAuth2时,似乎好像是在设计User- Agent Flow来帮助解决这种情况