我正在使用两个 Firebase 服务:React 应用程序中的实时数据库和身份验证。我使用了电子邮件/密码身份验证和基本数据库来创建库存应用程序,该应用程序由三个主要节点组成:库存、批次和未完成。在我的 React 应用程序中,我创建了一个登录页面,允许用户通过身份验证 API 登录。
const handleSignIn = async (values) => {
signInWithEmailAndPassword(
auth,
values.username,
values.password
)
.then((userCredential) => {
sessionStorage.setItem("user", values.username);
sessionStorage.setItem(
"login",
true
);
const user = userCredential.user;
history.push("/inv");
setMsg(null);
})
.catch((error) => {
setMsg("The Email or Password is Invalid");
console.log(error);
});
};
还有关于使用会话存储来检测登录状态的建议吗?我使用这个是因为网站经常重新加载。
我的主要问题是我希望实时数据库中的数据只能由通过身份验证登录的经过身份验证的用户读取和写入。
实时数据库的规则是:-
"rules": {
".read": "auth.uid != null",
".write": "auth.uid != null"
}
}
我已经尝试了 firebase 文档中的所有内容,但没有任何效果。
对于检测登录状态有什么建议(...)吗?
推荐的方法是“将观察者附加到全局身份验证对象”,如文档中所述。
我希望实时数据库中的数据只能读取并且 通过身份验证登录的用户可写 认证
正如您将在文档中看到的,您需要将规则与实时数据库的路径相关联。
文档中的示例:
{
"rules": {
"foo": { <==== DB path
".read": true,
".write": false
}
}
}
https://firebase.google.com/docs/database/security#section-authorization