Взгляните на JavaDoc setAllowedFields
:
"Зарегистрируйте поля, которые должны быть разрешены для привязки. По умолчанию это все поля. Ограничить это дляпример, чтобы избежать нежелательных изменений со стороны злоумышленников при привязке параметров HTTP-запроса. "
Это означает, что по умолчанию все поля разрешены. Если вы не хотите разрешать все поля, то вы можете указать разрешенные поля в этом методе.
Аналогично для setDisallowedFields
:
"Зарегистрируйте поля, которые нельзя использовать для привязки. По умолчанию установлено значение none. Пометить поля как запрещенные, например, чтобы избежать нежелательных изменений со стороны злоумышленников при привязке параметров запроса HTTP."
Это означает, что по умолчанию ни одно поле не запрещено. Если вы хотите запретить некоторые из полей, вы можете указать запрещенные поля в этом методе.
Таким образом, ответ на ваш вопрос состоит в том, что 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
, то оно будет разрешено. В противном случае это не будет разрешено.