当前位置: 首页 > 知识库问答 >
问题:

Firestore PHP SDK使用Auth规则设置

阳兴朝
2023-03-14
use Google\Cloud\Firestore\FirestoreClient;

 $db = new FirestoreClient();
 $db->collection('mycollectionname')
    ->document('mydocumentname')
    ->set(['name'=>'aaa','value'=>'111');
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {

      // before change
      allow read, write: if true;

      // after change
      allow read, write: if request.auth.uid != null;

    }
  }
}

将true更改为request.auth.uid!=null后,它会出现错误:

{ "error": { "code": 403, "message": "Missing or insufficient permissions.", "status": "PERMISSION_DENIED" } }

我可以弄清楚获取用户数据,比如:电子邮件和密码或用户id令牌,如何使用用户数据解决上述错误?

共有1个答案

邵子平
2023-03-14

我刚发现,也许对任何人都有用。

在文件使用Google\Cloud\FireStore\Connection\grpc上,我做了一些更改:

......
......

    private function addRequestHeaders(array $args)
    {
        $args += [
            'headers' => []
        ];

        $args['headers']['google-cloud-resource-prefix'] = [$this->resourcePrefixHeader];


        /////////  CODE THAT I ADD ///////////
        if(session('user_token'))
        {
            $args['headers']['Authorization'] = ['Bearer '.session('user_token')];
        }
        /////////  CODE THAT I ADD ///////////

        // Provide authentication header for requests when emulator is enabled.
        if ($this->isUsingEmulator) {
            $args['headers']['Authorization'] = ['Bearer owner'];
        }

        return $args;
    }

使用laravel,我让它检查会话,在Header上添加承载令牌。在上面的使用示例之后,我在使用Firestore函数之前添加了一个会话

use Google\Cloud\Firestore\FirestoreClient;

 /// adding session
 session(['user_token'=>'eyJhbGciOiJSUzI1................']);

 $db = new FirestoreClient();
 $db->collection('users')
    ->document('test@gmail.com')
    ->set(['name'=>'aaa','value'=>'111');
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{email} {
       allow read, write: if email == request.auth.token.email;
    }
  }
}
 类似资料:
  • 使用指南 - 统计设置 - 统计规则设置 为您详细介绍百度统计所支持的各种设置功能及使用方法,比如设置排除规则、设置跨域、添加指定广告追踪、设置转化目标等。 统计规则设置 什么是统计规则 如何设置跨域监控 跨域跟踪的用途举例 多域名网站的跨域跟踪 排除特定域名来源的访问流量 排除特定域名的访问流量 排除特定IP的访问流量 子目录介绍及设置方法 统一页面地址功能介绍

  • 我按顺序调用这些函数(javascript'Firebase'): 我在firestore中设置了安全规则,只有当文档中的电子邮件字段等于auth email:时,才允许读取“users/:docid” 问题是在上会出现权限缺失或不足的错误。当然,数据库中的电子邮件是正确的,所以唯一的问题可能是无效。是否登录(使用任何登录函数),即使解析,也不能保证auth令牌被更新并可以立即使用?

  • 目前,我正在尝试将与存储在集合中的的id进行匹配: 这是写的还是我做错了什么。任何帮助都很感激。

  • 我最近开始研究口水。我只是设计了一个简单的应用程序来更好地理解它。 谢谢。

  • 是否可以使用Firestore安全规则中的Firebase安装令牌? 如何验证FIS auth令牌?它们应该如何使用?

  • 我目前正在为共享一些资源的任务构建一个调度应用程序。每个任务可能使用一定百分比的资源。 我需要在Drools规则中检查的是每个共享资源不被并行任务使用超过100%。 因此代码看起来如下所示: 要计划的实体 最后是解决方案 有没有办法或者我必须切换回我的时隙课程? 编辑:包含在一种阴影规划实体中的阴影变量能起到这个作用吗?