[英]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.