我正在尝试创建一个您必须登录/注册的应用。我可以通过为其帐户创建一个名为“已禁用”的值来永久禁止用户,并将此值设置为“是”。如果此值为“是”,那么每次登录时都会检查,如果不是,他将无法登录。 暂时禁止账户是否可能?我当时想要在禁令发生时保存当前时间,然后加上禁令的时间。如果临时禁令值(时间)高于当前时间,则每次玩家登录时检查,如果是,则仍然禁止玩家。如果值(时间)低于玩家未被禁止的。但我认为他们只是可以在他们的设备设置中改变它。
还有其他办法吗?
答案 0 :(得分:3)
你可以disable a user's account through the Firebase Admin SDK。但这不会自动退出用户。这只会阻止他们再次登录。
为防止用户进行未经授权的更改,您可能还想要将已禁用用户的黑名单添加到您的数据库中:
/bannedUsers
uid1: <banned-until-timestamp>
uid2: <banned-until-timestamp>
uid3: <banned-until-timestamp>
然后你可以check this list from your security rules:
".write": "!root.child('bannedUsers').child(auth.uid).exists() ||
root.child('bannedUsers').child(auth.uid).val() < now"
答案 1 :(得分:3)
也许一个可能适合你的想法:
要禁止用户,请在数据库中为用户创建一个条目,将用户标记为禁止时间戳为NOW + X
{ "users" : {
"bad_user" : {
"banned" : {
"until" : 123456 // timestamp NOW + X
}
}
}
}
现在,无论用户何时登录,您都会检查用户是否被禁止,并立即尝试删除该条目。如果失败,惩罚时间仍在运行。如果成功,则用户可以使用您的应用程序:)
诀窍是使用firebase规则来限制可能的更改。
类似的东西:
{
"rules" : {
"users" : {
"$uid" : {
// ...
"banned" : {
.write : "(!newData && now < data.child('until').val() )"
....
请注意 - 这些不是工作规则,但应该有助于弄明白。