在我的所有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
这是我试图解决几天的完全相同的问题。
答案 0 :(得分:0)
最好在春季项目中使用@JsonView
(example)
如果@JsonView
不够,那么解决方案就不容易了。定义实现@JsonIgnoreProperties
和@JsonFilter
的特定类(接口)是不可避免的(
看看Jackson: Skip Objects Conditionally)