gpt4 book ai didi

java - Spring中DataBinder中setAllowedFields和setDisallowedFields方法的影响

转载 作者:太空宇宙 更新时间:2023-11-04 09:20:54 25 4
gpt4 key购买 nike

我的问题很简单。如果我执行 setAllowFields(),Spring 会自动禁止其他字段吗?

同样的问题,如果我使用setDisallowFields(),这是否允许其他字段?

我认为没有,但是,有人经历过这样的事情吗?

最佳答案

查看 setAllowedFields 的 JavaDoc :

"Register fields that should be allowed for binding. Default is all fields. Restrict this for example to avoid unwanted modifications by malicious users when binding HTTP request parameters."

这意味着默认情况下允许所有字段。如果您不想允许所有字段,那么您可以在此方法中指定允许的字段。

setDisallowedFields 也是如此:

"Register fields that should not be allowed for binding. Default is none. Mark fields as disallowed for example to avoid unwanted modifications by malicious users when binding HTTP request parameters."

这意味着默认情况下没有不允许的字段。如果您想禁止某些字段,则可以在此方法中指定禁止的字段。

<小时/>

因此,您的问题的答案是 setAllowedFields() 会自动禁止非指定字段,但 setDisallowedFields() 不会自动允许非指定字段(除非您也没有将它们包含在 setAllowedFields() 中)。

为了支持我的答案,让我包括 Spring 的 isAllowed 实现:

protected boolean isAllowed(String field) {
String[] allowed = getAllowedFields();
String[] disallowed = getDisallowedFields();
return ((ObjectUtils.isEmpty(allowed) || PatternMatchUtils.simpleMatch(allowed, field)) &&
(ObjectUtils.isEmpty(disallowed) || !PatternMatchUtils.simpleMatch(disallowed, field)));
}

您可以清楚地看到,如果某个字段存在于 allowedFields 中并且不存在于 disallowedFields 中,那么它才会被允许。否则不允许。

关于java - Spring中DataBinder中setAllowedFields和setDisallowedFields方法的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58336874/

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