[英]Firebase temporary ban account
我正在尝试创建一个必须登录/注册的应用程序。 我可以通过为其帐户创建一个名为“已禁用”的值并将该值设置为“是”来永久禁止用户。 然后,我将在每次登录时检查该值是否为“是”,否则将无法登录。 可以暂时禁止帐户吗? 我当时想保存禁令发生的当前时间,然后增加禁令的时间。 然后,在每次玩家登录时检查临时禁令值(时间)是否大于当前时间,如果是,则仍然被禁止。 如果该值(时间)低于播放器,则不被禁止。 但是我认为他们可以在设备的设置中进行更改。
还有其他方法吗?
您可以通过Firebase Admin SDK禁用用户帐户 。 但这不会自动注销用户。 这样只会阻止他们再次登录。
为了防止用户进行未经授权的更改,您可能还希望将禁用用户的黑名单添加到数据库中:
/bannedUsers
uid1: <banned-until-timestamp>
uid2: <banned-until-timestamp>
uid3: <banned-until-timestamp>
然后,您可以从安全规则中检查以下列表 :
".write": "!root.child('bannedUsers').child(auth.uid).exists() ||
root.child('bannedUsers').child(auth.uid).val() < now"
可能对您有用的想法:
要禁止用户,请在数据库中为该用户创建一个条目,以将该用户标记为已禁止,并带有时间戳NOW + X
{ "users" : {
"bad_user" : {
"banned" : {
"until" : 123456 // timestamp NOW + X
}
}
}
}
现在,每当用户随后登录时,您都可以检查该用户是否被禁止,并立即尝试删除该条目。 如果失败,则惩罚时间仍在运行。 如果成功,那么用户可以使用您的应用程序:)
诀窍是使用Firebase规则限制可能的更改。
就像是:
{
"rules" : {
"users" : {
"$uid" : {
// ...
"banned" : {
.write : "(!newData && now < data.child('until').val() )"
....
请注意-这些不是工作规则,但应该有助于弄清楚。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.