如何从 swift 代码应用 firebase 数据库安全规则
How to apply firebase database security rules from swift code
我添加了 Firebase 安全规则并启用了身份验证。我已根据密钥授予写入权限..
Firebase rules templet
{
"rules": {
"users": {
".write": "auth.uid == \"jack\""
}
}
}
现在我希望在 swift 代码中添加该规则
var ref: DatabaseReference!
ref = Database.database().reference()
Setting data as
ref.child("users/jack").setValue("jack")..// Something here to change.
您无法通过 Swift 代码设置用户的 UID。毕竟,如果你能做到这一点,任何人都可以通过获取你的配置数据和 运行 他们想要的任何代码来对付你的数据库来做到这一点。
为用户设置 UID 的唯一方法是 create a custom authentication provider,这只能在受信任的环境中完成,例如您的开发机器、您控制的服务器或 Cloud Functions。
要保护您的数据库,请在您的 Swift 代码中登录 Firebase 身份验证(例如使用 anonymous authentication),然后记录 UID,并使用它代替 jack
在您的安全规则中。
根据弗兰克的建议。
我已经做到了
pod 'Firebase/Auth'
import FirebaseAuth
Auth.auth().signInAnonymously { authDataResult, errorObj in
if let error = errorObj {
print("Sign in failed:", error.localizedDescription)
} else {
guard let userIdRecieved = authDataResult?.user.uid else {return}
ref.child("users/\(userIdRecieved)/...
我添加了 Firebase 安全规则并启用了身份验证。我已根据密钥授予写入权限..
Firebase rules templet
{
"rules": {
"users": {
".write": "auth.uid == \"jack\""
}
}
}
现在我希望在 swift 代码中添加该规则
var ref: DatabaseReference!
ref = Database.database().reference()
Setting data as
ref.child("users/jack").setValue("jack")..// Something here to change.
您无法通过 Swift 代码设置用户的 UID。毕竟,如果你能做到这一点,任何人都可以通过获取你的配置数据和 运行 他们想要的任何代码来对付你的数据库来做到这一点。
为用户设置 UID 的唯一方法是 create a custom authentication provider,这只能在受信任的环境中完成,例如您的开发机器、您控制的服务器或 Cloud Functions。
要保护您的数据库,请在您的 Swift 代码中登录 Firebase 身份验证(例如使用 anonymous authentication),然后记录 UID,并使用它代替 jack
在您的安全规则中。
根据弗兰克的建议。
我已经做到了
pod 'Firebase/Auth'
import FirebaseAuth
Auth.auth().signInAnonymously { authDataResult, errorObj in
if let error = errorObj {
print("Sign in failed:", error.localizedDescription)
} else {
guard let userIdRecieved = authDataResult?.user.uid else {return}
ref.child("users/\(userIdRecieved)/...