我正在開發一個使用JBoss RESTEasy(resteasy-jaxrs-3.0.8)的Web應用程序,但是我想禁用RoleBasedSecurityFilter.java並且只使用我自己定製的SecurityInterceptor
類(它也實現javax.ws.rs.container.ContainerRequestFilter
,就像RoleBasedSecurityFilter
類一樣,所以它們都是安全過濾器)。是否可以禁用RESTEasy的RoleBasedSecurityFilter.java?
這樣做的原因是,在line 43RoleBasedSecurityFilter.java調用isUserInRole() method,它總是返回我的應用程序錯誤。並因此導致ForbiddenException被拋出,這阻止了用戶訪問他應該有權訪問的資源。
我真的很喜歡能夠使用@RolesAllowed annotation聲明哪些角色可以訪問某些功能,但作爲解釋的那樣,RoleBasedSecurityFilter類是阻止這一點。所以我的問題是,有誰知道如何禁用一個特定的RESTEasy過濾器(即RoleBasedSecurityFilter)?
我想象它可能在部署描述符(web.xml)(例如context-param element)中完成,但我不知道如何實際禁用該過濾器。
我知道我還可以更改RoleBasedSecurityFilter.java文件中我使用的RESTEasy庫線,但這種方法太哈克對我來說,因爲我不想不得不將此黑客被卡住每次我都會升級RESTEasy版本。 (不知道多久會這樣..)
我知道我可以通過將該值設置爲false來禁用** all ** RESTEasy基於角色的安全性,但是[然後我得到'javax.ejb.EJBAccessException'](http://stackoverflow.com/q/25851374/2541501)...無論如何,我不希望禁用所有RESTEasy基於角色的安全性,因爲我有我自己的自定義'SecurityInterceptor'類(這也是RESTEasy安全性!)我只想_disable一個特定的安全filter_ ,即標準的RESTEasy安全過濾器(即'RoleBasedSecurityFilter.java')。 – PJvG 2014-10-24 07:44:54