Spring Security新方法级别注释

时间:2018-08-10 12:32:12

标签: java spring spring-security

我正在使用Spring Security来保护REST Service端点。我基本上需要检查用户是否具有权限,用户是否可以使用给定的参数调用该函数,最后,我对输出进行过滤,以使用户看不到不应有的东西。

为此,我有这组注释:

@PostFilter("#canViewOwnAssignment.canView(filterObject) or #canViewAllAssignments.canView(filterObject)") @PreAuthorize("hasAnyAuthority('canViewOwnAssignment', 'canViewAllAssignments') and (#canViewOwnAssignment.canEnter(userId) or #canViewAllAssignments.canEnter(userId))")

...对于所有方法。与上述代码段唯一不同的是 canViewOwnAssignment .canEnter()的参数。

我想简化一下,这样我可以有一个像这样的注解:@MyAnnotation(bean = CanViewAssignment.class, args = {"userId"})

我该如何实现?

我尝试扩展PrePostAnnotationSecurityMetadataSource.class,因为那是解析注释的一个,但是我不能仅使用@Primary来覆盖它,因为Bean实例已被烘焙到GlobalMethodSecurityDefinitionParser.class

中。

如果不需要,我不想开始重写Spring Security的一半,而只想重写一个方法。

0 个答案:

没有答案