2012-03-16 65 views

回答

3

您只能設置一個SecurityManager作爲安全管理器。

線程與Java中的安全性無關。對象在線程之間傳遞,因此使用基於線程的訪問模型沒什麼意義。

在Java中,每個類都被分配了一個ProtectionDomain,因此有一組權限(這些權限可能在某種意義上是「動態的」,但對於大多數情況下它是有效的)。當安全管理員被要求檢查權限時,它將代表AccessController,它檢查堆棧中的每個ProtectionDomain活動(大致)。在實踐中,你需要隔離來自多方的代碼,但每個方都可以有自己的ProtectionDomain,因此有權限。

+0

@erickson是的,但'ProtectionDomain'中唯一重要的方法是'implies'。如果你想知道'ProtectionDomain'是否應該允許一個權限,就調用這個方法,而不是試圖獲取屬性並做一些明顯非OO(和錯誤)的代碼。 – 2012-03-16 18:35:41