我需要使用特定参数限制方法执行。 F.E.某些卖家可以为客户ID = 1创建账单,但不能为客户id = 2创建账单。 是否可以在spring security中实现,或者我应该检查业务逻辑代码?
答案 0 :(得分:6)
这里有多种选择:
如果您只有一个这样的安全规则,那么使用ACL模块可能是一种过度杀伤力。在这种情况下,最好检查您的业务代码。您有两种方法可以调用此代码:
使用注释以声明方式调用它。您将能够更轻松地重用此检查,但您无法控制引发的异常(它将是默认的AccessDeniedException):
@PreAuthorize("hasRole('ROLE_AAA') and @billValidatorBean.validateForCustomer(#customerId)")
public createBill(Integer customerId, ...) {
或者直接在相应的方法中实现它,让您完全控制一切。
根据情况选择你的方式。