使用Spring创建全局initBinder

时间:2013-11-07 11:59:29

标签: java spring spring-mvc spring-data spring-mvc-initbinders

我正在使用Spring 3.2,我正在寻找一种方法,我可以强制控制器指定允许绑定的属性,因此恶意用户无法将值注入绑定对象。 Spring建议使用setAllowedFields()将白名单/ setDisallowedFields()列入黑名单。

我不想手动执行此白名单,而是想以动态方式执行此操作,因此我想绑定表单上可见的属性。

那么有可能获得这份白名单吗?有什么方法可以在表单上获得可见属性吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以实施RequestDataValueProcessor,尤其是方法processFormFieldValue。您可以构建一个允许的字段名称集合,将其存储在会话中。

接下来,您将扩展ConfigurableWebBindingInitializer并覆盖initBinder方法。哪个会检索集合并在那里预先配置WebDataBinder

最后你需要一些配置来连接所有东西。

链接

  • RequestDataValueProcessor javadoc
  • ConfigurableWebBindingInitializer javadoc