已经登录,但我仍然收到此错误"Missing or insufficient permissions."



我不知道为什么我得到这个错误:&;缺少或不足的权限。&;连我都已经登录了。我遵循了YouTube上的每个教程,但我仍然得到错误。

这是我的firestore规则:

rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}

onAuthStateChanged:

auth.onAuthStateChanged(user => {
if(user) {
//User is signed in.
const user = auth.currentUser;
if(user != null) {
console.log('There is a current user with email', user.email);
console.log('UID:', user.uid);
}
} else {   
//User is not signed in.
console.log('Not Logged in')
}
});

firebase登录码:

auth.signInWithEmailAndPassword(email, password).then(() => {
console.log('Login Successful')
window.location.assign('/home')
}).catch(error => {
let errorCode = error.code;
let errorMessage = error.message;
alert(`Error Code: ${errorCode}, Error Message: ${errorMessage}`);
console.error(error);
});

这是/home

中的代码
const express = require('express');
const router = express.Router();
const {firebaseDB, firebaseAdmin} = require('../db');
const firestore = firebaseDB.firestore();
const Subject = require('../models/subject');
router.get('/', async  (req, res) => {
const teacherRef = [];
const subjectsArray = [];

console.log(firebaseAdmin.auth().currentUser);
try {
//STUB: Getting all ID in Teachers Collection and pushing it in array.
const dataColRef = await firestore.collection('Teachers').get();
dataColRef.docs.map(doc => {
teacherRef.push(doc.id);
});
for(let teacherData of teacherRef) {
const dataSubColRef = await firestore.collection('Teachers').doc(teacherData)
.collection('HandledSubjects')
.orderBy('createdAt', 'desc')
.limit(10).get();
dataSubColRef.docs.map(doc => {
const subjects = new Subject(
doc.id,
doc.data().subjectName,
doc.data().subCoverImg,
doc.data().imgType,
doc.data().subjectTeacher
);
subjectsArray.push(subjects);
});
}
res.render('home', {displaySub: subjectsArray});
} catch (error) {
console.error(error.message);
}
});
module.exports = router;

当我在服务器端console.log(firebaseAdmin.auth().currentUser)显示"未定义"时,我没有得到它。但在客户端,我得到currentUser的详细信息。

问题是您试图访问Admin SDK中的当前用户。Firebase Admin sdk没有当前用户的概念,因此firebaseAdmin.auth().currentUser调用确实是未定义的。

然而:Admin sdk以管理权限运行,这意味着权限错误不太可能来自那里。你确定你不应该使用/loggingfirebaseDB.auth().currentUser吗?

相关内容

最新更新