簡體   English   中英

如何簡單地在后端保護實體?

[英]How to simply secure entities on the backend?

我想知道是否有一些好的做法,如何在不始終獲取根實體的情況下保護后端上的實體。

假設您有一個具有以下實體的應用程序(例如Spring Boot + MySQL):

  • 用戶 :每個人可能有很多project或者根本沒有。
  • 項目 :每個項目都屬於一個用戶,並且可能有多個項目,或者根本沒有一個項目。
  • 項目 :每個項目都屬於一個項目,可能有很多評論,也可能根本沒有。
  • 評論 :每個人都屬於一個項目,或者根本不屬於一個項目。

經典的東西

User --> Project --> Item --> Comment

我想知道如何有效地檢查用戶是否有權刪除例如Comment

我的第一個想法是重新加入Project,然后檢查用戶是否有權修改此Project。

我還考慮為每個實體設置一個較大的映射表,以防止進行2個聯接。 但是保持同步似乎很混亂。

我的第三個想法是,面向文檔的數據庫可能比經典的MySQL / MariaDB更好。

所以我的問題是,有什么概念或者具體的實現/庫/示例如何解決這個問題?

像往常一樣,“取決於”。

看來您已經簡化了需求說明。 只是要清楚:

  • 評論僅屬於一項。
  • 一個項目恰好屬於一個項目。
  • 一個項目恰好屬於一個用戶。
  • 用戶具有零個或多個項目。
  • 一個項目有零個或多個項目。
  • 一個項目有零個或多個評論。

您要回答的問題是:給定一個項目,特定用戶是否可以基於上述數據結構訪問它?

您沒有指定記錄數,也沒有指定“有效”的確切定義,但我假設您不是在談論Facebook級別的數據,“有效”的意思是“快速”。

如果是這樣,您的第一個選項-“將評論添加到項目,將項目添加到項目,將項目添加到用戶”可能非常快-關系數據庫確實擅長聯接。 它不會重復數據,因此維護很簡單。

選項2-對映射表進行非規范化-幾乎可以肯定是不必要的,並且可能會變慢,因為您必須維護不是免費的映射表。

選項3很有道理; 您還可以查看圖形數據庫。

但是,還有一些用於管理權限的標准模型可能更有用。 正如您提到的Spring一樣, Spring Security支持豐富的權限系統 也有一些選擇

暫無
暫無

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

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