{
"rules": {
"Accounts": {
".read": "true",
"$user_id": {
// Check if object has all required values after operation
".validate": "newData.child('Username').isString() &&
newData.child('Password').isString() &&
newData.child('Salt').isString() &&
newData.child('ExpirationDate').isString()",
// Only allow username update if:
// * There is a provided username AND
// * There is no existing username (new account) OR
// * It is the same as the existing username (patches)
"Username": {
".write": "(!data.exists() || data.val() === newData.val())"
},
"Password": {".write": "newData.exists()"},
"Salt": {".write": "newData.exists()"},
"ExpirationDate": {".write": "newData.exists()", ".validate": "newData.isString()"},
"IsVerified": {".write": "newData.exists()", ".validate": "newData.isBoolean()"},
"Domains": {".write": "true"},
"ActiveDomain": {".write": "true"},
"VerificationCode": {".write": "!data.exists() || newData.exists()", ".validate": "newData.isString()"}
},
}
}
}
发送至 [FIREBASEURL]/Accounts/blmvyubcyhislpquhj@ytnhy,com.json
{
"Username": "blmvyubcyhislpquhj@ytnhy,com",
"Password": "lR3lh7BcXU0=",
"Salt": "0sFEiXUsUpQ=",
"ExpirationDate": "8/1/2024",
"ActiveDomain": null,
"Domains": null,
"IsVerified": false,
"VerificationCode": "327761"
}
此帖子始终返回未经授权。
根据我的发现,如果我删除所有“用户名”级别规则并将其替换为虚拟“.write”:“true”,则规则有效。
我尝试过使用小写字段名称。 我只尝试过该级别的用户名规则。 游乐场似乎显示该请求是有效的。
如果可能,我想避免使用 Firebase 身份验证。我意识到这样会不太安全。
发送
POST
请求会在您调用它的路径下创建一个新的子级。因此,您将 JSON 写入 [FIREBASEURL]/Accounts/blmvyubcyhislpquhj@ytnhy,com/newpushID
,这是您的规则不允许的。
要解决此问题,请使用
PUT
而不是 POST
。
顺便说一句,这些是正常的 RESTful 语义,所以我建议阅读这些内容。