首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用在Spring Data REST的创建/更新请求中设置Audit字段

禁用在Spring Data REST的创建/更新请求中设置Audit字段
EN

Stack Overflow用户
提问于 2020-10-13 15:37:32
回答 2查看 143关注 0票数 0

我使用了不同Spring组件的组合- Boot (2.3),Data,Data REST,Springdoc。在我的模型对象中我使用了审计-我用@CreatedBy,@CreatedDate等注释了一些字段。我想禁用通过REST API设置这些审计字段的值的可能性。同时,我希望这些信息在检索数据时可用。

这似乎是很明显的事情,但我无法找到一种方法来做到这一点。默认情况下,我可以很容易地在API调用中提供这些值,并看到它们被持久化。

理想情况下,这种配置更改在Springdoc (在请求模型中)生成的OpenAPI规范中也是可见的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-15 04:19:52

因此,事实证明我很愚蠢:)

所以我的错误是当时身份验证和授权被禁用了。启用后,我无法为createdBy和其他字段提供值,因为它们只是被正确的值覆盖。

当涉及到OpenAPI规范时,我不得不用以下命令注释字段:

代码语言:javascript
复制
@Schema(accessMode = Schema.AccessMode.READ_ONLY)

来自io.swagger.v3.oas.annotations.media.Schema;。这导致了正确的信息。请参见Swagger视图:

票数 1
EN

Stack Overflow用户

发布于 2020-10-15 00:13:41

我想问题出在你糟糕的设计上。请考虑您的设计是否正确。我猜在你的设计中,除了Spring数据REST端点(API),还有其他代码可以创建和更新你的对象并保存到数据库中。

您的问题与Spring Data REST无关。用@Createdxx和@LastModifiedxx注释的审计字段由Spring数据存储库自动更新,而Spring data REST只是调用Spring数据存储库来持久化数据。

回答以下两个问题有助于阐明您的设计。

问题1:如果您希望保留默认情况下由Spring Data REST创建的创建(POST)端点,并且不希望设置带有@Createdxx注释的审计字段,那么负责设置这些审计字段的代码是什么?假设你发送一个POST请求来创建一个对象,你希望createdBycreatedDate为空吗?或者createdBycreatedDate稍后会被其他代码更新吗?

问题2:如果您想保留默认情况下由Spring Data REST创建的更新(PUT/PATCH)端点,并且不希望更新带有@LastModifiedxx注释的审计字段,那么负责更新这些审计字段的代码是什么?这也会导致不完全的审计(您进行了更新,但lastModified信息没有更新)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64330690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档