2014-01-10 48 views

回答

0

所以,顯而易見的答案是你打開你最喜歡的IDE並提出問題。有很多廢話,但PermissionsProtectionDomain在其implies方法中使用它。

因此,讓我們從有趣的地方開始,嘗試找出發生了什麼。

AccessControlContext.checkPermission是一個有趣的方法,如果我們想知道acc是否允許特權。在AccessControlContext.checkPermission的調試混亂中,致電ProtectionDomain.implies(通過context[i])。看起來合理,每個ProtectionDomain「在堆棧中」需要允許該權限。

ProtectionDomain.implies class implies on PermissionCollection。很公平。

PermissionCollection是一個抽象類,但Permissions是API文檔指出的實現。這將打電話impliesSetPermission,對吧?拿去。它爲Permission的每種類型(實現)創建專家PermissionCollection

專家收藏是java.security設計的一個非常多毛的部分。舉一個例子,FilePermission.newPermissionCollection(我在鍵入時返回)返回一個FilePermissionCollection(只出現在API文檔中用於不需要的序列化目的 - 詛咒Java序列化)。 FilePemrissionCollection.implies是一個優化,它不會調用FilePermission.implies,但推斷其實現。因此通常不會調用Permission.implies。代替使用Permission.newPermissionCollection的優化版本。

(我不是Java 2安全模型或庫的粉絲。)

相關問題