Firebase:防止多个设备上的同一帐户

ced*_*123 5 account firebase

我正在开发一个有角度的应用程序,我使用Firebase来验证我的用户.我想知道如何阻止我的用户将他们的帐户提供给其他人.此外,我想阻止人们使用同一帐户同时从不同的设备登录.我找到了一些非常好的教程来构建在线系统,但是这些系统并不能阻止同一个帐户被多个设备上的许多不同的人使用.我已经能够检查用户是否正在尝试使用已经在使用的帐户(在线),但我无法设法注销其中一个用户(使用alreaydy在线帐户..).我试图在signInwithemailAndPassword()方法中调用auth.signout()但它不起作用,我没有成功注销用户.谢谢您的帮助.我需要的是一个片段,因为从理论上说,一切都很简单.

Doe*_*ata 7

既然你没有说明你正在使用什么语言我只是想使用Swift,但是我在这里列出的原则对于任何语言都是一样的.

看看这个问题.Firebase似乎并不直接支持您所需的内容.但是,您可以这样做:

在数据库中创建一个树,用于存储用户登录的布尔值.

SignedIn: {
    uid1: {
        "signedIn": true
    }
    uid2: {
        "signedIn": false
    }
    .....
}
Run Code Online (Sandbox Code Playgroud)

我假设你在更改屏幕后进行身份验证.您现在想要在执行此操作之前执行其他查询.如果用户已登录,则可以显示警报,否则您可以像往常一样继续操作.

func alreadySignedIn() {
     if let uid = Auth.auth().currentUser?.uid {
        Database.database().reference().child("SignedIn").child(uid).observeSingleEvent(of: .value, with: { snap in
            if let dict = snap.value as? [String: Any] {
                if let signedIn = dict["signedIn"] as? Bool {
                    if signedIn {
                        // display an alert telling the user only one device can use
                        // there account at a time
                    }
                    else {
                        // change the screen like normal
                    }
                }
            }
        })
     }
}
Run Code Online (Sandbox Code Playgroud)

当然,这只会阻止帐户同时"共享".如果您只允许基于设备ID登录,则可以制定更严格的准则.例如,您可以获取设备ID,并且只允许登录该设备.您必须允许用户在获得新设备时更新此设置,但如果您确实想要锁定帐户,则这可能是更好的选择.