是否可以禁用RESTEasy的RoleBasedSecurityFilter.java?

我正在开发一个使用JBoss RESTEasy(resteasy-jaxrs-3.0.8)的Web应用程序,但我想禁用RoleBasedSecurityFilter.java并且只使用我自己的自定义SecurityInterceptor类(它也实现了javax.ws.rs.container.ContainerRequestFilterRoleBasedSecurityFilter类所做的那样,它们都是安全filter。

原因是RoleBasedSecurityFilter.java中的第43行调用了一个isUserInRole()方法 ,该方法在我的应用程序中始终返回false。 结果导致抛出ForbiddenException ,这会阻止用户访问他应该有权访问的资源。

我真的希望能够使用@RolesAllowed批注来声明哪些角色可以访问某些function,但正如所解释的, RoleBasedSecurityFilter类阻止了这一点。 所以我的问题是,有没有人知道如何禁用一个特定的RESTEasyfilter(即RoleBasedSecurityFilter )?

我想它可以在部署描述符(web.xml)中完成(例如使用context-param元素 ),但我不知道如何实际禁用filter。

我意识到我也可以更改我正在使用的RESTEasy库中的RoleBasedSecurityFilter.java文件中的行,但是这种方法对我来说太难了,因为我不希望每次升级时都不得不再次应用这个hack RESTEasy版本。 (不知道那会是多久……)

您可以通过在web.inf部署描述符中添加此配置来启用/禁用基于角色的安全性。

  resteasy.role.based.security true  

希望这可以帮助。