angular - 即使我知道它已登录,如何修复“Firebase 存储:用户无权访问”错误
问题描述
我是 Angular 和 Firebase 的新手。这是我使用以下方法将图像上传到 Firebase 存储时遇到的问题。当我上传图片时,图片,甚至用户似乎都已登录,但控制台显示“Firebase 存储:用户无权访问对象”。我想知道我该怎么做?
我使用的代码是该库的最新 Angular 和 Ionic。在此之前,我曾尝试修改 Firebase Storage 中的规则,但是,所有这些尝试都失败了
profile.page.ts:
export interface Image {
id: string;
image: string;
}
@Component({
selector: 'app-profile',
templateUrl: './profile.page.html',
styleUrls: ['./profile.page.scss'],
})
export class ProfilePage {
public isPublic: boolean;
validations_form: FormGroup;
// matching_passwords_group: FormGroup;
errorMessage: string = '';
successMessage: string = '';
url: any;
newImage: Image = {
id: this.afs.createId(), image: ''
}
loading: boolean = false;
downloadURL: any;
userEmail: string;
;
uploadImage(event) {
var user = firebase.auth().currentUser;
console.log(user.email);
this.loading = false;
if (event.target.files && event.target.files[0]) {
var reader = new FileReader();
reader.readAsDataURL(event.target.files[0]);
// For Preview Of Image
reader.onload = (e:any) => { // called once readAsDataURL is completed
this.url = e.target.result;
// For Uploading Image To Firebase
const fileraw = event.target.files[0];
console.log(fileraw)
const filePath = '/Style/' + user.uid + '/Image' + (Math.floor(1000 + Math.random() * 9000) + 1);
const result = this.SaveImageRef(filePath, fileraw);
const ref = result.ref;
result.task.then(a => {
ref.getDownloadURL().subscribe(a => {
console.log(a);
this.newImage.image = a;
this.loading = false;
});
this.afs.collection("Style").doc(user.uid).set(this.newImage);
});
}, error => {
alert("Error");
}
}
}
SaveImageRef(filePath, file) {
return {
task: this.afStorage.upload(filePath, file)
, ref: this.afStorage.ref(filePath)
};
}
我的安全规则:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write,create,delete;
}
}
期望用户获得授权并拥有对 Firebase 存储的全部访问权限。
解决方案
推荐阅读
- excel - VBA粘贴剪贴板内容(唯一值)
- html - 如何在不加倍边框或使用边框折叠的情况下圆桌边框?
- macos - 检测主机是否可以通过跳转主机访问
- java - Spring QueryDsl 分页过滤器按 ACL 权限
- windows - 在 Windows 10 中启用剪贴板历史记录
- laravel - 根据 Laravel 中的下拉选择发送电子邮件
- html - 如何排除 Pug 中的路径?
- c++ - 在 Visual Studio 中模拟 GCC 的 __builtin_unreachable?
- excel - 考虑在宏执行期间按下的键
- java - Java Files.walkTree() 子目录问题