c# - Firebase 实时数据库规则被拒绝权限
问题描述
我正在使用电子邮件/密码登录方法注册用户。所以在成功注册并登录后,我无法在 Firebase Real Time 中读写我的数据。
我是 Firebase 的新手,所以我无法真正弄清楚主要问题是什么或我错过了哪些步骤。
这条规则显然工作正常:
{
"rules": {
".read": "auth == null",
".write": "auth == null"
}
}
但是,此规则不起作用,尽管我的用户已经注册并获得了 UID。
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
它总是显示以下错误:
Exception occured while processing the request.
Url: https://App-Name-6ssd2.firebaseio.com/Appointments/-MUAG-CHWBFSv-Vrtsoc/.json?print=silent
Response: {
"error" : "Permission denied"
}
我目前想要的是允许任何注册用户读/写每个人的信息,但它总是拒绝许可。
截图:
我获取 Firebase 数据的实现。错误也指向this方法。
public async Task<List<Appointment>> GetUserAppointment(string userId)
{
var appointments = (await Firebase.Child("Appointments")
.OnceAsync<Appointment>()).Where(a => a.Object.UID == userId).Select(item =>
new Appointment
{
UID = item.Object.UID,
AppointmentID = item.Object.AppointmentID,
Title = item.Object.Title,
Date = item.Object.Date,
Time = item.Object.Time,
Status = item.Object.Status,
ReasonText = item.Object.ReasonText
}).ToList();
return appointments;
我第一次执行用户 SinUp 时。
public async Task<string> SignUpWithEmailAndPassword(string email, string password)
{
try
{
var signUpTask = await auth.CreateUserWithEmailAndPasswordAsync(email, password);
var user = signUpTask.User;
var token = await auth.CurrentUser.GetIdToken(false).AsAsync<GetTokenResult>();
await SendEmailVerification();
return token.Token;
}
catch (FirebaseAuthInvalidUserException e)
{
e.PrintStackTrace();
return string.Empty;
}
catch (FirebaseAuthInvalidCredentialsException e)
{
e.PrintStackTrace();
return string.Empty;
}
catch (FirebaseAuthUserCollisionException existEmail)
{
existEmail.PrintStackTrace();
return string.Empty;
}
}
为了检查用户是否经过身份验证/验证,我进行了调试,结果...我可以在控制台中看到与 Firebase -> Authentication -> Users 中相同的 UID。
解决方案
这是因为您无权访问数据库,请检查实时数据库中的规则选项卡。
打开firebase,选择左侧的数据库。
现在在右侧,从下拉列表中选择实时数据库并更改规则以允许任何人编写数据库
{ "rules": { ".read": true, ".write": true } }
你的规则是:
{
"rules": {
".read": "auth != null",
".write":"auth != null"
}
}
这意味着只有授权用户才能写入和读取数据。
推荐阅读
- javascript - React splice 无法与 Checkbox 中的数组一起正常工作
- r - 将多个元素赋予一个函数并分配它们
- reactjs - 无法在包含的库中设置断点 VS Code React App
- android - 天气磨损应用
- javascript - 复选框值不会在 Angular 中从一个组件保留到另一个组件
- facebook - Facebook 实时评论 API 400 错误请求
- next.js - 有没有办法使用 Google Adsense 进行跨源隔离?
- wordpress - Mailgun 没有收到来自我的 WordPress 插件的电子邮件
- ssl - 是否可以获得只能在本地访问的网站或服务的 SSL 证书?
- python - 一种去除(修剪)JSON 中所有字符串值的优雅方法