0

我是 Spring JPA/jHipster 的新手。我的问题受到 Julien Dubois 的 jHipster 演讲的启发:https ://youtu.be/R3jm2qmqctI?t=43m7s

假设您有一个可以操作的银行账户(餐厅 +100 美元,ATM 机 -50 美元,...)当然,每个银行账户都有一个所有者。

创建操作的 POST REST 调用的负载可能如下所示: {"amount":100,"description":"restaurant","bankaccount":{"id":1136}}

银行帐户的 id 是唯一的,并且(在本示例中)之前会通过另一个 REST 调用发送给我。

不幸的是,没有什么可以阻止恶意用户更改此值。可以简单地猜测别人拥有的银行帐户的 id,然后将操作添加到该帐户中。

我(还)没有看到处理这个问题的例子。
我是否应该明确检查银行帐户是否归用户所有?我想这种类型的验证可能会级联通过您的所有实体,从而导致大量额外的调用。也许我错过了什么?

谢谢,安迪

4

1 回答 1

0

是的,您有责任签入您的 REST 控制器或授权操作的底层服务。Spring security 提供了不同的机制来实现这一点,特别是通过使用@PreAuthorize 和@PostFilter。

使用 DTO 也是一件好事,这样您可以更好地控制实体的哪些字段被公开以通过 API 进行读写。

于 2015-08-16T22:49:12.257 回答