使用Spring-MVC,我们如何根据用户角色过滤HTTP POST表单参数?

时间:2011-08-31 14:34:31

标签: forms security spring spring-mvc

我有用于在Web应用程序中编辑用户的表单。如果用户角色是导演,我希望他们能够使用表单编辑用户对象上的所有属性。但是,如果用户角色是中级角色而不是导演,我只希望他们编辑用户对象上的大部分/部分属性 - 而不是其他角色。

当然,如果他们不是导演,我很容易隐藏我不希望他们编辑的字段的html标记,但这不够安全。当用户角色不是Director时,如何告诉spring MVC过滤http post参数而不将它们设置在表单后备对象上?我可以这样做吗?我知道我可以使用@InitBinder作为“全部捕获”的情况,但我不认为我可以在每个请求的基础上使用它...我可以吗?

我知道Rails最近刚刚在他们的框架的最新版本中添加了这个功能,所以如果Spring没有它,我也不会感到惊讶。用Spring实现这个很容易吗?

如果没有内置框架支持,那么最简单的方法是什么?为表单支持对象创建一个全新的类型,只是在更新期间手动复制所有字段?当我想添加新字段时,这看起来有点臃肿,不太可维护......但我想不出任何其他解决方案。

由于

1 个答案:

答案 0 :(得分:1)

Submitting / binding partial objects with spring mvc

似乎有类来表示具有User类属性的不同子集的不同表单可能是最简单的方法。至少您不必手动复制一个属性,因为您可以使用:

BeanUtils.copyProperties(Object source, Object destination)