簡體   English   中英

如何使用 Firebase 后端處理 Flutter 中的用戶角色? 客戶端和管理應用程序或兩者在一個應用程序中?

[英]How to handle with user role in Flutter with Firebase backend? Client & admin app or both in one app?

我正在開發一個具有 2 個用戶角色的項目,即客戶和賣方。

目前,我為兩個用戶角色使用相同的應用程序。 讓我快速解釋一下:兩個用戶都有一個LoginScreen ,如果他們使用Firebase's signInWithEmailAndPassword方法使用他們的電子郵件和密碼(我也使用 Firebase)登錄,則有一個用於檢測用戶角色的功能。

我的目標

賣家會有一些不同的功能和屬性(添加、更新、刪除一些產品)。 而且我不知道哪個更好地將它們分開用於 2 個應用程序或兩者在一個應用程序中?

這是該函數代碼的一部分:

 if (user != null) {
          if (isSeller != false) {
            return const SellerHome();
          } else {
            return const CustomerHome();
          }
        } else {
          return const LoginView();
        }

如您所見,如果用戶在Firebase CloudStorage中有isSeller = true字段,則返回SellerHome 但如果沒有,則返回CustomerHome。

但這是否是處理User Role Based Auth的安全或好方法? 我應該為此使用 Cloude 函數嗎?

我應該將 CustomerHome 和 SellerHome 分開嗎?

我看了看 Firebase 自定義聲明,實際上我並沒有很好地理解它。 顯然,我可以說我在 Firebase 和 Flutter 方面並不專業。

無論您是在單獨的應用程序中還是在單個應用程序中實現最終用戶和應用程序管理功能,這純粹是個人選擇。 但無論哪種方式,它都不應該是安全風險。

使用您共享的代碼,惡意非管理員用戶可以做的最糟糕的事情就是顯示SellerHome小部件。 這本身通常不是安全問題,因為小部件是無害的,除非它還允許用戶執行賣方功能。 由於此功能需要調用某些后端功能,因此您需要確保用戶有權執行他們嘗試執行的操作。

例如,如果您使用 Firebase 的數據庫之一(Firestore 或實時數據庫)作為應用程序的后端,則可以使用其服務器端安全規則來確保所有數據訪問都得到授權。 這里常見的使用模式是所謂的內容所有者僅訪問,可以在這些規則中輕松完成。 在這些規則中有許多方法可以保護數據訪問,它們可能(有時)與您的前端代碼一樣復雜。

如果您沒有使用 Firebase 數據庫作為后端,您通常需要將 ID 令牌從前端代碼傳遞到后端,在那里驗證 ID 令牌,然后確定(使用您自己的邏輯)是否未識別的用戶被授權執行他們請求的操作。

暫無
暫無

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

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