杰克逊@JsonIgnore基于春季安全角色的领域

sin*_*ge3 6 serialization spring json jackson

在我的所有Spring REST Web应用程序中,我有很多域对象和DTO.

我需要根据发出请求的用户的spring安全角色过滤一些域对象或DTO字段.我希望Jackson根据尝试访问资源的用户的Spring GrantedAuthorities角色,过滤输出JSON以允许/禁止特定类字段序列化.

我不能为每个不同的视图组合创建新的DTO,因为它会很乱.

我找到了这个解决方案:
Spring 3.2:根据Spring Security角色过滤Jackson JSON输出
但是它不起作用,过滤器只在第一个用户登录时应用一次.然后所有其他用户获得相同的过滤,无论他们的角色是什么.

在这篇博客文章中我无法比Ray Holland更好地解释我的问题:
http://jackson-users.ning.com/forum/topics/jackson-custom-serialization
这是我试图解决的一些完全相同的问题天.

到目前为止,我找不到干净的方法.

Tod*_*.Lu 1

最好@JsonView在spring项目中使用(示例

如果@JsonView还不够,则没有简单的解决方案。不可避免地要定义特定的类(接口)来实现@JsonIgnoreProperties@JsonFilter看看Jackson:Skip Objects Conditionally