2009-07-01 35 views
2

我目前正在構建一個Java財務應用程序,我需要向其添加權利,並且想知道人們採取了哪些方法來解決此問題,以及是否有任何人會推薦的第三方Java庫。標準權利模型

目前我有大量的用戶可以大致分爲角色(例如「交易者」)。每個角色可以擁有零個或多個與其關聯的權限(例如「創建交易」)。

設計決策

是更好地有更一般的權限(如「貿易」),加上配套行動(「創建」,「更新」,「刪除」)或多個描述的權限(「如「創建交易」)?

什麼是一種很好的方式來模擬一些權限被參數化的事實(例如,用戶X有權限「創建交易」,但僅限於LSE交易的股票)?我已經看到這樣做名稱 - 值對之前,但這似乎相當醜陋。我唯一想到的想法是實現Permission作爲訪問者(請參閱下面的示例代碼),但擔心界面可能變得笨拙(a #商業對象增加)。

public interface Permission { 
    void checkPermission(Trade trade) throws SecurityPermission; 
    void checkPermission(AnotherBusinessObject obj) throws SecurityPermission; 
} 

public class ExchangePermission implements Permission { 
    private final Exchange exchange; 

    public void checkPermission(Trade trade) { 
    if (!exchange.equals(trade.getExchange())) { 
     throw new SecurityException(); 
    } 
    } 
} 

任何想法/建議都是值得歡迎的。提前致謝。

回答

3

「權利」在這裏不是正確的術語 - 既定的術語是Capabilities,雖然「權限」也被廣泛使用 - 而且Java已經有一個Permission API用於限制沙盒環境中的代碼。看看你是否可以使用它而不是定義你自己的類。

我想說某種回調設計將是必要的,並且Java Permission API中的implies()方法也可能有用。

+0

真實,許可API是一個很好的起點+1 – dfa 2009-07-01 09:04:34

1

值得看看acegi它提供了一個很好的安全框架,可以爲您節省大量的工作。即使你不使用它,它至少可以給你一些關於你應該如何自己實現它的想法。

雖然Acegi的設計用於與Spring還可以使用它without Spring