在 firebase 中删除用户不会触发 onAuth 方法
Deletion of User in firebase does not trigger onAuth method
当用户通过 Login & Auth firebase 网络界面的 Registered Users 部分删除时,不会触发 onAuth 方法并且用户保持登录状态并能够写入数据库。如何确保用户的会话被销毁然后用户被删除?
安全规则。
删除用户后,他们不会立即取消身份验证。但是,您可以以保护私人数据免受不再存在的用户访问的方式编写安全规则。
以下数据为例
{
"privateData": "only authenticated and existing users can read me!,
"users": {
"user1": "Alice",
"user2": "Bob"
}
}
}
在这种情况下,我们只希望 /users
列表中的用户能够访问 /privateData
位置。一个简单的 auth != null
会起作用,直到其中一个用户被删除。
{
"rules": {
"privateData": {
".read": "auth != null && auth.uid == root.child('users').child(auth.uid).exists()",
".write": "auth != null && auth.uid == root.child('users').child(auth.uid).exists()"
}
}
}
上述规则不仅会检查经过身份验证的用户,还会检查用户是否存在于 /users
位置。
令牌将过期,他们将无法再登录。但是通过强大的安全规则,您可以保证他们无法再访问任何数据。
当用户通过 Login & Auth firebase 网络界面的 Registered Users 部分删除时,不会触发 onAuth 方法并且用户保持登录状态并能够写入数据库。如何确保用户的会话被销毁然后用户被删除?
安全规则。
删除用户后,他们不会立即取消身份验证。但是,您可以以保护私人数据免受不再存在的用户访问的方式编写安全规则。
以下数据为例
{
"privateData": "only authenticated and existing users can read me!,
"users": {
"user1": "Alice",
"user2": "Bob"
}
}
}
在这种情况下,我们只希望 /users
列表中的用户能够访问 /privateData
位置。一个简单的 auth != null
会起作用,直到其中一个用户被删除。
{
"rules": {
"privateData": {
".read": "auth != null && auth.uid == root.child('users').child(auth.uid).exists()",
".write": "auth != null && auth.uid == root.child('users').child(auth.uid).exists()"
}
}
}
上述规则不仅会检查经过身份验证的用户,还会检查用户是否存在于 /users
位置。
令牌将过期,他们将无法再登录。但是通过强大的安全规则,您可以保证他们无法再访问任何数据。