Jackson @JsonIgnore基于春季安全角色的字段

时间:2016-02-22 16:01:41

标签: json spring serialization jackson

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

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

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

我找到了这个解决方案:
Spring 3.2: Filtering Jackson JSON output based on Spring Security role
但它不起作用,过滤器仅在第一个用户登录时应用一次。然后所有其他用户都获得相同的过滤,无论他们的角色是什么。

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

到目前为止,我无法找到一种干净的方法。

1 个答案:

答案 0 :(得分:0)

最好在春季项目中使用@JsonViewexample

如果@JsonView不够,那么解决方案就不容易了。定义实现@JsonIgnoreProperties@JsonFilter的特定类(接口)是不可避免的( 看看Jackson: Skip Objects Conditionally