java使用@RolesAllowed通过RESTEasy和Jackson过滤实体属性
使用RESTEasy和Jackson,是否可以在我的模型中使用@RolesAllowed
注释,以避免在输出中序列化某些属性,具体取决于用户的角色
我已经找到了大量关于如何使用Jersey实现这一点的文档,但是没有找到RESTEasy
我在这个架构上被阻止了,所以切换库不是一个选项,并且使用自定义ObjectMapper
(如所解释的here)也不是一个选项,因为模型太大了,需要花费大量时间来标记大数据集的每个属性以进行正确的序列化。另外,这是指一个旧版本的杰克逊图书馆,我不知道如何使它与新版本的工作
编辑
具体参见this blog post了解我试图实现的目标。请注意,这是特定于Jersey的,到目前为止,我还没有找到关于RESTEasy的文档来实现这一点
# 1 楼答案
如果您不愿意使用^{} ,则可以考虑^{} 。首先需要扩展^{} 并根据用户角色控制序列化:
要将筛选器应用于某个bean,请使用
@JsonFilter("roleBasedPropertyFilter")
对其进行注释:然后在^{} 中为^{} 注册筛选器:
如果您想使过滤器成为“全局的”,也就是说,应用于所有bean,您可以在类中创建一个mix,并用
@JsonFilter("roleBasedPropertyFilter")
注释它:然后将类中的mix绑定到
Object
: