Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何从react with restricted storage rules在firebase.storage()请求中添加身份验证或参数_Reactjs_Firebase_React Hooks_Firebase Storage - Fatal编程技术网

Reactjs 如何从react with restricted storage rules在firebase.storage()请求中添加身份验证或参数

Reactjs 如何从react with restricted storage rules在firebase.storage()请求中添加身份验证或参数,reactjs,firebase,react-hooks,firebase-storage,Reactjs,Firebase,React Hooks,Firebase Storage,我的规则: rules_version = '2'; service firebase.storage { match /b/{bucket}/o { match /user/{userId}/{allPaths=**} { allow read, write: if request.auth != null && request.resource.name == userId; } } } 我只想限制具有特定用户ID的经过身份验证的用户的访

我的规则:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
      match /user/{userId}/{allPaths=**} {
    allow read, write: if request.auth != null && request.resource.name == userId;
    }
  }
}
我只想限制具有特定用户ID的经过身份验证的用户的访问。 这就是我用来上传图片的功能。如何在请求中添加auth或params,以便我只能限制特定用户的访问

  const handleUpload = () => {
    /// storing a image

    const uploadTask = storage.ref(`images/${image.name}`).put(image);

    uploadTask.on(
      "state_changed",
      (snapshot) => {
        ////progress function..
        const progress = Math.round(
          (snapshot.bytesTransferred / snapshot.totalBytes) * 100
        );
        setProgress(progress);
      },
      (error) => {
        //Error function
        console.log(error);
        alert(error.message);
      },
      () => {
        ///upload complete function
        storage
          .ref("images")
          .child(image.name)
          .getDownloadURL()
          .then((url) => {
            //Use return URL
       
            setMyURL(url);
            setProgress(0);
            setCaption("");
            setImage(null);
          });
      }
    );
  };

这听起来非常适合
自定义声明
和安全规则。这些允许您在令牌中向每个用户添加自定义声明,以便您可以从数据库和存储规则中的securuty规则中读取该声明

你可以找到更多关于他们的信息

困难的部分是,您只能使用AdminSDK从后端编辑它们。您可以创建一个可调用函数,控制用户是否可以为其他用户更改该函数,或者(我喜欢这样做):我创建一个列表或集合,该列表或集合在创建和删除时具有firebase函数触发器。如果将某个人的
userUid
添加到该列表/集合中,则特定的
自定义声明将添加到该用户uid中。如果他是
userUid
被从列表/集合中删除,则
自定义声明将被删除。使用该列表/集合的
规则
,您可以控制谁可以在其中添加和删除用户