0

我在我的项目中使用依赖项,这确实节省了大量时间,并为在项目中定义spring-boot-starter-data-rest了关联存储库的实体自动创建 Rest 端点。CrudRepository但是假设我的一个实体是Article并且经过身份验证的用户(在本例中为会话身份验证)可以从 POST 端点创建文章。在我的Article表中,我有一列user_id,它代表创建文章的用户的 ID。

现在用户可以使用 POST 端点并发送user_id不安全的属性,一个用户可以设置这个 id 并假装另一个用户发布了一篇文章。所以我必须在后端级别设置这个属性(来自用户的会话信息)。

我对 spring 环境有点陌生,现在我能想到的唯一解决方案是完全重写端点,以便我可以user_id正确地存储到数据库中。这是适得其反的,因为这是对默认行为spring-boot-starter-data-rest提供的一个非常小的更改。是否有一种解决方案可以在将 Article 对象推入数据库之前捕获它,这样我就可以设置user_id并将其发送回默认处理?

4

1 回答 1

0

当然,您可以使用 jpa entityListeners 来使用 @preUpdate 和 @prePersist 注释

https://www.concretepage.com/java/jpa/jpa-entitylisteners-example-with-callbacks-prepersist-postpersist-postload-preupdate-postupdate-preremove-postremove

于 2018-04-23T03:39:25.017 回答