簡體   English   中英

如何在java中實現權限控制?

[英]How to implement permission control in java?

我們開發了一個應用程序,需要實現權限控制,這意味着有人只能搜索數據庫中的特定記錄:

  1. 員工只能搜索自己的記錄。
  2. 主管可以搜索其下屬的記錄。
  3. 主管可以看到“批准”按鈕來批准申請
  4. 工作人員只能提交申請。

我知道spring安全性,但實際上我們如何使用spring security實現上面的功能呢?

我們可以用SQL實現權限控制,這意味着首先選擇他的角色,然后選擇他所有的下屬記錄,如下所示:

select * from table where staffid in (.......)   

但這種方法看起來太原始,難以維護。 所以我的問題是:我們可以使用任何框架和實踐來實現一個體面的權限控制機制嗎? 如何在應用程序中實現權限控制?

1)員工只能搜索自己的記錄。 2)主管可以搜索其下屬的記錄。

這些似乎是您必須在DAO層實現的規則

3)主管可以看到“批准”按鈕來批准申請

- 這可以通過JSF中基於UI角色的渲染來完成

4)工作人員只能提交申請。

Spring安全方法攔截器可以在這里使用: http//static.springsource.org/spring-security/site/docs/3.0.x/reference/secure-object-impls.html

使用postgres數據庫,您可以從表繼承表。 即:

CREATE TABLE access{
  admin bool default false,
  supervisor bool default false,
  staff_user_id bigint default null,
   ...
}
CREATE TABLE flower(
  flower_id serial,
  name varchar(24)
)inherits (access)

然后,您可以創建更新/刪除觸發器,並區分連接用戶。

這可能是一個解決方案。

正如您所說,實體“角色”和“業務數據”必須在數據庫中保持獨立 - 您可以加入角色表並僅選擇適當的數據,而不是多次調用數據庫。

如果您尚未確定它太復雜,您應該查看Spring Security ACL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM