繁体   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