Spring InitBinder - PullRequest
       2

Spring InitBinder

1 голос
/ 23 сентября 2011

У меня проблемы с настройкой initBinder в Spring MVC. У меня есть ModelAttribute, в котором есть поле, которое иногда будет отображаться.

public class Model {
  private String strVal;
  private int intVal;
  private boolean boolVal; // Only shows in certain situations
}

Как правильно настроить этот initBinder? Вот что у меня есть, но всякий раз, когда я изменяю данные поста, я могу изменить этот boolVal независимо от того, что я говорю, что это запрещено. Я предполагаю, что моя проблема в том, что я не могу использовать ярлык, который хотел бы.

@InitBinder
public void initBinder(WebDataBinder binder) {
  binder.setIgnoreUnknownFields(true);
  if (binder.objectName() == MODEL) {
    binder.setAllowedFields("*");
    if (!somePermissionChecks()) {
      binder.setDisallowedFields("boolVal");
    }
  }
}

Проверка прав доступа возвращает ложь, поэтому выполняется вызов setDisallowedFields. Проблема в том, что я все еще могу подделать это значение в пользовательском интерфейсе, добавив ввод или изменив имя другого поля или добавив его к данным POST.

Есть ли быстрый способ сделать это, не перечисляя все свойства вручную?

1 Ответ

0 голосов
/ 26 сентября 2011

Сбой проверки разрешений во время инициализации связывателя? Вы пробовали без заявления binder.setAllowedFields("*");?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...