2012-08-05 27 views
0

我正在開發一個計算機實驗室管理系統的應用程序,這是我的任務。我使用SQL Server編寫SQL腳本,並管理我的數據庫,並使用netbeans編寫Java源代碼並通過JDBC與SQL Server交互。如何爲Java中的每個方法分配角色和設置權限?

我想在我的應用程序中爲每個方法設置角色和權限。示例: 管理員可以查看/添加/編輯/刪除用戶 用戶只能查看記錄。

void view(),add(),edit(),remove可以被admin使用。但是,void view()只能由用戶使用,並且用戶不能使用方法:add(),edit()。我試過搜索,看了一些書,爲我的麻煩尋找一些文章。但是,沒有我發現的文章!

謝謝您的閱讀!

+0

這是比什麼都一個設計問題。您不會將方法限制爲用戶角色本身。 – 2012-08-05 22:27:15

+0

我同意@Tyler。你需要提出一個設計來執行賦值的要求。也許你可以從一個'Role'接口開始,爲它提供具體的類。 – 2012-08-05 22:36:15

回答

0

那麼你不能在方法上定義「權限」。 您可以改爲使用OOP來表示您的域的對象。每個對象都可以代表權限系統中的實體,實現它應該允許使用的方法。

例如:

class Admin 
{ 
    public void Add(){} 
    public void View(){} 
    public void Edit(){} 
    public void Remove(){} 
} 


class User 
{ 
    public void View(){} 

} 

與其他人一樣指出,這是一個最大的設計問題。之前提出的過分簡單的解決方案並不規模非常好:)(如果你需要動態改變權限?如果不同的權限應授予不同的用戶?)

這當然取決於複雜性和你家庭作業的要求。如果您需要一個更優雅靈活的解決方案來管理權限,您可以查看RBAC(基於角色的訪問控制)。

請注意,我不是一個真正的答案,只是一些提示。無論如何希望有所幫助。

+0

非常感謝! – 2012-08-06 18:52:50

1

由於管理員,用戶等的角色,而不是明確的用戶我會建議使用的角色模式。 這裏一個小例子:

class User{ 
UserRole role; 
//other user concerning stuff 
} 

abstract class UserRole{ 
//eg. every User has at least the View Permission  
abstract void view(); 
//If the view() Operation should behave the way for every role, implement it right here 
} 

class AdminRole extends UserRole{ 
    public void add(){} 
    public void view(){} 
    public void edit(){} 
    public void remove(){} 
} 

class EditRole extends UserRole{ 
    public void view(){} 
    public void edit(){} 
} 

這樣你隔離用戶及其權限,你可以在運行時更改角色。

+0

非常感謝! – 2012-08-06 18:52:15

相關問題