2014-09-25 64 views
2

我正在開發一個使用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版本。 (不知道多久會這樣..)

回答

0

您可以通過在web.inf部署描述符中添加此配置來啓用/禁用基於角色的安全性。

<context-param> 
    <param-name>resteasy.role.based.security</param-name> 
    <param-value>true</param-value> 
</context-param> 

希望這會有所幫助。

+0

我知道我可以通過將該值設置爲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

相關問題