SpringSecurity检查方法参数

SpringSecurity检查方法参数,spring,spring-security,acl,Spring,Spring Security,Acl,我需要用特定的参数限制方法的执行。 F.e.一些卖家可以为客户id=1创建账单,但不能为客户id=2创建账单。 是否可以在spring security中实现,或者我应该签入业务逻辑代码?这里有多个选项: 您可以使用模块来考虑实际域对象的安全限制。当您有多个这样的安全规则时,这是一个很好的选择 若您只有一个这样的安全规则,那个么使用ACL模块可能会有点过头。在这种情况下,最好签入业务代码。您有两个选项可以调用此代码: 使用注释以声明方式调用它。您可以更轻松地重用此检查,但您将无法控制引发的异

我需要用特定的参数限制方法的执行。 F.e.一些卖家可以为客户id=1创建账单,但不能为客户id=2创建账单。
是否可以在spring security中实现,或者我应该签入业务逻辑代码?

这里有多个选项:

  • 您可以使用模块来考虑实际域对象的安全限制。当您有多个这样的安全规则时,这是一个很好的选择
  • 若您只有一个这样的安全规则,那个么使用ACL模块可能会有点过头。在这种情况下,最好签入业务代码。您有两个选项可以调用此代码:

    • 使用注释以声明方式调用它。您可以更轻松地重用此检查,但您将无法控制引发的异常(它将是默认的AccessDeniedException):

    • 或者直接用相应的方法实现它,这样你就可以完全控制一切

根据情况选择你的方式

@PreAuthorize("hasRole('ROLE_AAA') and @billValidatorBean.validateForCustomer(#customerId)")
public createBill(Integer customerId, ...) {