2012-08-10 53 views
2

我正在查看Java EE 6規範部分EE.6.25,它指出Web容器必須支持以下注釋:@PermitAll,@DenyAll,@RolesAllowed,@DeclareRoles和@RunAs。@RolesAllowed,@Deny所有在網絡層的使用?

爲Java™平臺1.1的要求

通用註解規範EE.6.25通用註解定義了Java語言的註解是由其他幾種規格,其中包括本說明書中使用 。使用這些註釋的規格 完全定義了這些註釋的要求。小程序容器不需要支持任何這些註釋。所有其他容器 必須提供所有這些註釋的定義,並且必須支持這些註釋的語義 ,如相應規範中所述以及下表中總結的 。

表EE.6-5通用註解支持通過集裝箱

 
Annotation App Client Web EJB 

Resource  Y   Y  Y 
Resources  Y   Y  Y 
PostConstruct Y   Y  Y 
PreDestroy  Y   Y  Y 
Generated  N   N  N 
RunAs   N   Y  Y 
DeclareRoles N   Y  Y 
RolesAllowed N   Y  Y 
PermitAll  N   Y  Y 
DenyAll   N   Y  Y 

下來一點進一步規範,它說,」 ...... Web容器現在需要支持RolesAllowed,PermitAll和DenyAll註釋,Servlet規範和JAX-RS規範包含詳細信息。「

它沒有提到JSF規範,所以我假設這些註釋不能在託管的bean上使用。爲什麼不?

如何在Web層中對不是servlet或過濾器的對象實施授權等橫切關注,並在web.xml中使用頁級聲明式安全性?

回答

2

...答案是......一個EJB是一個CDI管理bean。要在託管bean上使用@RolesAllowed,只需將其轉換爲EJB並享受即可。這是用作輔助bean的EJB的an example