手动删除连接到我的iphone模拟器所在的uid的帐户(来自firebase仪表板)后,当我运行下面的代码时,它仍然以某种方式验证和检索uid.这怎么可能?
let ref = Firebase(url: "https://moviebuffapp.firebaseio.com/")
override func viewDidLoad() {
super.viewDidLoad()
if ref.authData != nil {
let uid = ref.authData.uid
print(uid)
Run Code Online (Sandbox Code Playgroud) 我使用Firebase Quickstarts for Android Auth示例,然后我在firebase仪表板中创建了一个用户,使用电子邮件和密码登录用户,用户成功登录.但是当我删除用户时,它仍然登录并显示旧用户的电子邮件(user.getEmail())
// [START auth_state_listener]
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getEmail());
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
// [START_EXCLUDE]
updateUI(user);
// [END_EXCLUDE]
}
};
// [END auth_state_listener]
Run Code Online (Sandbox Code Playgroud)
我的firebase仪表板中的用户和AuthStateListener都没有用户登录的用户.
怎么可能呢?
我遇到了使用电子邮件/密码登录Firebase简单登录的奇怪行为:如果我使用现有用户帐户登录,我可以写入Firebase ref(即$ root/list/$ item).如果没有,我没有按预期的写访问权限(Firebase规则似乎没问题),但是如果客户端已登录,并且我同时从Firebase Forge(Auth页面)删除用户,则连接的客户端仍然可以写入访问权限. Firebase参考!它是设计还是错误?谢谢.
这是规则:
{
"rules": {
".read": true,
"list": {
"$item": {
".write": "auth != null && newData.child('author').val() == auth.id",
".validate": "newData.hasChildren(['author', 'content'])",
"author": {
".validate": "newData.val() == auth.id"
},
"content": {
".validate": "newData.isString()"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)