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
被从列表/集合中删除,则自定义声明将被删除。使用该列表/集合的规则
,您可以控制谁可以在其中添加和删除用户