我是一名Angular程序員,我正在接近後端世界。我很想知道,粗略地說,通過JWT管理多個用戶應用程序的後端如何工作。當我必須從角度來檢索數據庫中的東西時非常簡單,因爲它足以使服務在其中輸入rest-api的url ......但是當您擁有多個用戶時,後端會發生什麼情況? 比方說,我有一個帶有認證的Web應用程序,帶有Date的TODO列表。我想象在數據庫中將成爲所有用戶的列表。但是,如果用戶使用表單添加事件和日期,它將如何工作?您爲每個用戶創建一個數據庫表「events」?還是一個包含所有用戶的所有事件的大型「事件」表?後端如何與Angular web應用程序多用戶合作
回答
你的問題並不是與Angular有關,甚至不是關於後端服務,所以我會忽略那部分。所以你在問關於設計多租戶數據存儲。
您爲每個用戶創建一個數據庫表'events'?還是一個包含所有用戶的所有事件的大型「事件」表?
這裏沒有對錯之分。這一切都取決於你的需求。一般來說,這是簡單和隔離之間的折衷。如果您談論關係數據庫(我從您的表述中獲得),那麼您可以爲每個租戶分別創建一個數據庫,或者爲每個租戶分配一個單獨的模式,或者爲具有索引列的單個表創建一個單獨的數據庫。你甚至可以爲每個租戶做一個單獨的服務器。所有都是可行的選擇。單獨的數據庫選項是最孤立的,但更難編程。單表比較容易,但數據存儲是共享的。我可以說,我曾與客戶合作設計這類解決方案,並且大多數時候他們爲每個用戶選擇一個單獨的數據庫。
我推薦閱讀this討論SQL中的多租戶數據的文章 服務器(但也適用於其他關係數據庫)。它已經10歲了,但仍然非常相關。
當然這個決定也會受到你的數據存儲的影響。如果您不使用RDBMS,那麼您將擁有不同的概念和功能來組織數據,例如:集合,角色,文件夾,容器等。另外 - 某些數據存儲具有內置工具來處理這些需求。在示例中 - Azure SQL DB具有一個稱爲Row Level Security的功能,可以更輕鬆地管理帶租戶標識列的單個表。它還有一個名爲Elastic DB Pool和Elastic DB Tools的概念,用於管理每個租戶單獨數據庫的情況。 我相信其他產品\技術具有可比較的功能,但這些僅僅是一些示例,可以幫助我闡明這一點。
在您描述的場景中,通常會有一個「事件」表,其中包含所有用戶的事件。但是,該表還將包含一個包含創建該事件的用戶的ID的列。
在顯示已登錄用戶的事件時,首先要驗證JWT令牌是否有效(請注意,如果即使此驗證發生在客戶端,也必須發生在服務器端,因爲安全原因)。如果令牌有效,您將從令牌聲明中檢索用戶ID。然後,您將在數據庫查詢中使用此ID,以便僅檢索屬於登錄用戶的事件。
- 1. HBase作爲web應用程序後端
- 2. Web應用程序與Linux的多用戶應用程序
- 3. Rails應用程序作爲多個應用程序的後端
- 4. Angular Chatroom Web應用程序
- 5. Web服務客戶端應用程序
- 6. .net客戶端Web應用程序?
- 7. 僅客戶端Web應用程序
- 8. 如何在Java後端正確部署Angular 2應用程序?
- 9. 鎖定Web客戶端 - 多線程應用程序
- 10. 如何從後端(Tomcat)調度Java Web應用程序進程?
- 11. 在Web應用程序的後端使用Excel電子表格與宏後端
- 12. 組合多個node.js web應用程序
- 13. 如何爲Web應用程序配置apache http客戶端v3.0(多線程)
- 14. 如何使用服務應用程序從Web應用程序訪問客戶端應用程序
- 15. 多租戶Web/SaaS應用程序
- 16. 移動應用程序後端與Web應用程序後端有什麼不同?
- 17. 如何使用Apache Spark作爲Web應用程序的後端而不是Postgres
- 18. java:多線程,多用戶web應用程序中的FTP
- 19. 多線程Web應用程序與多線程Web服務器
- 20. Tizen Web應用程序Angular JS教程
- 21. 多客戶端Web應用程序的Drools是否可行?
- 22. 如何爲WSDL服務生成Web應用程序客戶端?
- 23. 如何從Web應用程序阻止特定的客戶端?
- 24. 權限問題與.NET的Web客戶端應用程序
- 25. Web應用程序與客戶端的交互?
- 26. node.js與客戶端呈現的Web應用程序
- 27. 桌面客戶端的Web應用程序與通知?
- 28. 創建支持多個後端的Web應用程序
- 29. 如何爲Web應用程序支持多個用戶界面
- 30. C#獨立應用程序與java後端web服務