1
我在设置Spring MVC中的initBinder时遇到了一些麻烦。我有一个ModelAttribute,它有一个有时会显示的字段。Spring InitBinder
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");
}
}
}
权限检查返回false,从而调用setDisallowedFields。问题是,我仍然可以通过添加输入或更改另一个字段的名称或将其附加到POST数据来在UI上伪造此值。
有没有一个快速的方法来做到这一点,而不必手动列出所有的属性?
权限检查不失败。我看到它进入并调用setDisallowedFields,但我仍然可以将该值附加到POST数据,并将其设置为POST数据中设置的任何值,即使该数据不应该被允许。编辑问题以反映使用不正确的语言。 – Scott
可能是“*”可能导致问题。我的印象是所有字段默认都是允许的。如果我错了,请纠正我。 – unixorn