我是新来的。 在我的具有多个页面的nuxt js项目中,firestore规则被设置为read or write once request.auth!=null。
因此,如果在页面中刷新时,auth将消失,并在终端中显示错误'permission-denied'。
我在本地尝试了身份验证状态持久性,但它不起作用。 使用这些身份验证持久性模式的目的是什么?
firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL)
.then(function() {
return firebase.auth().signInWithEmailAndPassword(email, password);
})
Auth会话会自动持久存在于应用程序的前端,但是nuxt.js包含前端和后端部分。 如果您将用户数据存储在前端的某个地方,那么您可能需要等待,直到用户数据变得可以访问。
侦听器示例:
firebase.auth().onAuthStateChanged(function (user) {
if (user) {
console.log('User is logged: ', user);
}
});
然而,这将使用户只能在前端访问,如果您想在后端预加载数据,您将需要在cookie中存储id和刷新令牌,或者使用Nuxt Firebase模块,它应该为您处理服务工作者。
因此,在您的情况下,看起来您正在尝试在用户数据变得可访问之前读取数据(这可能是由于尝试在后端获取数据造成的)。