gpt4 book ai didi

火力地堡 : Prevent same account on multiple devices

转载 作者:行者123 更新时间:2023-12-02 09:10:09 25 4
gpt4 key购买 nike

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

最佳答案

由于您没有说明您使用的是什么语言,所以我将使用 Swift,但我在这里列出的原则对于任何语言都是相同的。

看看this question 。 Firebase 似乎并不直接支持您正在寻找的内容。但是,您可以执行以下操作:

在数据库中创建一棵树,用于存储用户登录的 bool 值。

SignedIn: {
uid1: {
"signedIn": true
}
uid2: {
"signedIn": false
}
.....
}

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

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
}
}
}
})
}
}

当然,这只是防止帐户同时被“共享”。如果您只允许基于设备 ID 登录,您可以制定更严格的准则。例如,您可以 get the device id并且只允许在该设备上登录。您必须允许用户在获得新设备时更新此设置,但如果您确实想锁定您的帐户,这可能是更好的选择。

关于火力地堡 : Prevent same account on multiple devices,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47751377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com