gpt4 book ai didi

spring-boot - Spring Data Rest 中的字段安全性

转载 作者:行者123 更新时间:2023-12-03 18:02:53 25 4
gpt4 key购买 nike

这个有代表性的例子:

有一个管理员用户 A 和一个 普通用户B .

A 可以看到并改变 x,y,z。

只有当z有一定的值时,B才能看到x,y(不是z)并改变x(不是y,z)。

public class U{
private Long id;
private String x;
private String y;
private String z;
[... getter and setter]
}

问题是如何使用 Spring Data Rest 一般实现这一点。 ResourceProcessor 似乎只适用于链接,验证器无法查看用户是否更改了字段...

我已经实现了一个基于属性的访问控制,所以我可以创建和保存角色、权限和策略(使用 SpEl),这决定了谁可以轻松地在数据库中查看和更改特定字段。

更新 1

我已经添加了一个 Jackson BeanSerializerModifier 来过滤属性,但是存在的问题是我不知道 z 的原始(数据库)值并且无法检查 B 是否有权更改 x。

更新 2

我添加了一个自定义的 Jackson Std(De)Serializer,但现在我不能动态地将它用于每个实体,因为我必须为每个实体编写完整的 (de)serializer。

更新 3

两周后,多次尝试解决此问题均未成功,我将尝试将过滤器集成到 SDR 中。

更新 4

虽然我为 PUT 和 PATCH 请求添加了过滤器,但我发现 https://jira.spring.io/browse/DATAREST-373https://jira.spring.io/browse/DATAREST-428会是更好的解决方案。现在我要为他们找到解决方案。

最佳答案

也许您可以使用 @JsonView 来描述您可以从 DTO 读取和写入的内容?
http://www.baeldung.com/jackson-json-view-annotation

因此,您将拥有一个用于管理员的 View 和一个用于简单用户的 View 。

关于spring-boot - Spring Data Rest 中的字段安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43157192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com