【发布时间】:2014-11-20 07:20:00
【问题描述】:
我正在开发一个使用 JBoss RESTEasy (resteasy-jaxrs-3.0.8) 的 Web 应用程序,但我想禁用 RoleBasedSecurityFilter.java 并且只使用我自己的自定义 SecurityInterceptor 类(它也实现 javax.ws.rs.container.ContainerRequestFilter 就像RoleBasedSecurityFilter 类确实如此,因此它们都是安全过滤器)。
原因是RoleBasedSecurityFilter.java 中的line 43 调用了isUserInRole() method,它在我的应用程序中总是返回false。结果引发了 ForbiddenException,这会阻止用户访问他应该有权访问的资源。
我真的很喜欢能够使用@RolesAllowed annotation 来声明哪些角色可以访问某些功能,但正如所解释的,RoleBasedSecurityFilter 类阻止了这一点。所以我的问题是,有谁知道如何禁用一个特定的 RESTEasy 过滤器(即 RoleBasedSecurityFilter)?
我想它可能在部署描述符 (web.xml) 中完成(例如使用 context-param element),但我不知道如何实际禁用过滤器。
我意识到我也可以更改我正在使用的 RESTEasy 库中的 RoleBasedSecurityFilter.java 文件中的行,但这种方法对我来说太老套了,因为我不想被卡住每次我升级我的 RESTEasy 版本时再次应用这个 hack。 (虽然不知道会是多久..)
【问题讨论】:
标签: java security rest jboss resteasy