Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 禁用在SpringDataREST中的创建/更新请求中设置审核字段_Spring Boot_Spring Data_Spring Data Rest_Springdoc - Fatal编程技术网

Spring boot 禁用在SpringDataREST中的创建/更新请求中设置审核字段

Spring boot 禁用在SpringDataREST中的创建/更新请求中设置审核字段,spring-boot,spring-data,spring-data-rest,springdoc,Spring Boot,Spring Data,Spring Data Rest,Springdoc,我正在使用各种Spring组件的组合—引导(2.3)、数据、数据REST和Springdoc。在我的模型对象中,我使用审计-我用@CreatedBy、@CreatedDate等注释一些字段。我想禁用通过RESTAPI设置这些审计字段值的可能性。同时,我希望在检索数据时可以使用这些信息 这似乎是一件很明显的事情,但我找不到一个方法来做到这一点。默认情况下,我可以轻松地在API调用中提供这些值,并看到它们被持久化 理想情况下,这样的配置更改在Springdoc生成的OpenAPI规范(在请求模型中)

我正在使用各种Spring组件的组合—引导(2.3)、数据、数据REST和Springdoc。在我的模型对象中,我使用审计-我用@CreatedBy、@CreatedDate等注释一些字段。我想禁用通过RESTAPI设置这些审计字段值的可能性。同时,我希望在检索数据时可以使用这些信息

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


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

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

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

回答以下两个问题有助于澄清您的设计

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

问题2:
如果您希望在默认情况下保留由Spring数据创建的更新(放置/修补)端点,并且不希望更新带有@LastModifiedxx注释的审核字段,那么什么代码负责更新这些审核字段?这也会导致不完整的审计(您进行了更新,但上次修改的信息没有更新)。

所以我很傻:)

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

当谈到OpenAPI规范时,我必须使用以下注释字段:

@Schema(accessMode = Schema.AccessMode.READ_ONLY)
来自
io.swagger.v3.oas.annotations.media.Schema。这导致了正确的信息。请参见“大摇大摆”视图:


谢谢你的帮助。我刚刚发现了配置方面的错误。。看看我的答案。但是谢谢!你应该接受你的答案:)嘿,这样做的感觉很奇怪……:)