如何为使用 Cloud Firestore 的 Flutter 应用设置安全规则?

Posted

技术标签:

【中文标题】如何为使用 Cloud Firestore 的 Flutter 应用设置安全规则?【英文标题】:How to setup security rules for a Flutter app that uses Cloud Firestore? 【发布时间】:2019-05-26 05:32:14 【问题描述】:

我正在创建一个 Flutter 移动应用,并希望使用 Cloud Firestore 来存储一些客户端应该访问的数据。到目前为止,没有用户特定的数据,所以我不希望我的用户必须登录应用程序。我需要指定哪些安全规则以允许客户端读取数据,但拒绝公共访问(从应用程序的“外部”)?

这些是我目前设置的安全规则。

service cloud.firestore 
    match /databases/database/documents 
        match /document=** 
            allow write: if false;
            allow read: if request.auth.uid != null;
        
    

在认证-->登录方式下,我开启了匿名认证。但是我不确定安全规则是否正确以及我需要在客户端中使用什么 Dart 代码来获得所需的行为(客户端不需要指定凭据,但可以保护我的数据不被应用程序外部访问)。

【问题讨论】:

所以你说“所以我不希望我的用户必须登录应用程序”,同时你说“我需要指定哪些安全规则才能允许客户登录” .所以有误会。 抱歉,我编辑了问题。我希望我的用户手动登录,但我不确定我是否必须在客户端执行某些操作来验证客户端(自动,无需用户注意)。 【参考方案1】:

所以我不希望我的用户必须登录应用程序。

但是你验证他们。就算是匿名认证,也是认证。

我需要指定哪些安全规则以允许客户端读取数据但拒绝公共访问(从应用程序的“外部”)?

您已经拥有的确切规则。

但我不确定安全规则是否正确。

规则是正确的。

我在客户端需要什么 Dart 代码来获得所需的行为(客户端不需要指定凭据,但可以保护我的数据不被应用程序外部访问)。

您的代码应该类似于this。

【讨论】:

好的,谢谢,只是澄清一下:这将为每个客户端会话创建一个新的匿名用户,对吗?似乎有点奇怪,但如果这是要走的路…… 单个用户将只有一个“会话”。每个用户都有自己的“会话”。另请参阅我的回答 post

以上是关于如何为使用 Cloud Firestore 的 Flutter 应用设置安全规则?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Instagram 克隆构建 Cloud Firestore 数据?

如何为使用 Firestore 文档快照的模型编写测试

如何为一对一聊天应用编写 Firestore 规则?

如何为从 Firestore 填充的 RecyclerView 实现过滤器?

如何为 Firestore 文档设置到期日期 [重复]

如何为 Firestore 创建大量示例数据?