Ios 不使用Firebase身份验证的实时数据库的Firebase规则
我对Firebase服务非常陌生,但我已经完成了iOS应用程序的代码,该应用程序负责Firebase实时数据库交互 现在我想让我的应用程序安全,并用Firebase规则保护它。存在一个问题,我使用自己的用户身份验证,因此我不使用Firebase AuthIos 不使用Firebase身份验证的实时数据库的Firebase规则,ios,objective-c,swift,firebase,firebase-realtime-database,Ios,Objective C,Swift,Firebase,Firebase Realtime Database,我对Firebase服务非常陌生,但我已经完成了iOS应用程序的代码,该应用程序负责Firebase实时数据库交互 现在我想让我的应用程序安全,并用Firebase规则保护它。存在一个问题,我使用自己的用户身份验证,因此我不使用Firebase Auth 因此,问题是如何使用Firebase规则保护数据库,而不使用Firebase身份验证。注意:据我所知,在Firebase中直接使用自定义身份验证系统是不可能的 假设:您有一个身份验证服务器,Firebase Admin SDK(可以/已经)集成
因此,问题是如何使用Firebase规则保护数据库,而不使用Firebase身份验证。注意:据我所知,在Firebase中直接使用自定义身份验证系统是不可能的 假设:您有一个身份验证服务器,Firebase Admin SDK(可以/已经)集成了该服务器。 您需要创建自定义令牌,以便在数据库/存储中使用身份验证: 一旦通过身份验证,在访问其他服务器时将使用此标识 Firebase服务,如Firebase实时数据库和云 存储此外,JWT的内容将在 Firebase实时数据库安全规则和 云存储安全规则中的request.auth对象 从上面的链接中省略Java和Python 在服务器中:
// Step 1: Your client has sent the credentials.
// Step 2: Fetch the client's unique id, and create a custom token with the Admin SDK.
var uid = "some-uid";
admin.auth().createCustomToken(uid)
.then(function(customToken) {
// Send token back to client
})
.catch(function(error) {
console.log("Error creating custom token:", error);
});
然后在iOS部分:
// Step 1: Login with your own authentication system.
// Step 2: Send your credentials to your server, and fetch the customToken.
// Step 3: Sign in with FIRAuth:
[[FIRAuth auth] signInWithCustomToken:customToken
completion:^(FIRUser *_Nullable user, NSError *_Nullable error) {
// ...
}];
正如Stevenson所说,没有firebase身份验证,您无法使用安全规则 要使用firebase身份验证,请执行以下步骤 您可以从服务器获取firebase令牌以及您自己的身份验证令牌,然后您可以使用自定义令牌身份验证api ()向firebase进行身份验证
{
"rules": {
"users": {
"$uid": {
".read": "auth != null && auth.uid == $uid",
".write": "auth != null && auth.uid == $uid"
}
}
}
}
这里,auth是授权对象。uid是唯一的令牌(上述情况下的用户id),通过服务器端的自定义令牌生成发送。有关详细信息,请检查有关用户安全性的firebase文档。如果不使用firebase身份验证,则无法使用基于当前已验证用户的安全规则。如果您打开项目进行验证,则可以转到数据库部分,然后从那里设置firebase规则(您将看到一个名为“规则”的选项卡)