Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在angular Firebase应用程序中,如何防止使用相同凭据从不同设备多次登录?_Angular_Firebase_Web Applications - Fatal编程技术网

在angular Firebase应用程序中,如何防止使用相同凭据从不同设备多次登录?

在angular Firebase应用程序中,如何防止使用相同凭据从不同设备多次登录?,angular,firebase,web-applications,Angular,Firebase,Web Applications,在angular Firebase应用程序中,如何防止使用相同凭据从不同设备多次登录?我可以想到两个选项。一个简单的不那么安全,一个更复杂的更安全: 您可以在数据库中创建一个文件夹,用于跟踪已登录的用户。然后,您可以在某人尝试登录之前或之后查询它,并相应地处理事件。当然,这种方式无法防止用户篡改javascript 如果您想确保人们无法绕过您的阻止程序,您可以实施自定义身份验证,在此期间检查服务器上的数据库,并且仅在没有其他人登录时返回令牌 创建一个UUID,并在每次登录时将其注册到数据库中

在angular Firebase应用程序中,如何防止使用相同凭据从不同设备多次登录?

我可以想到两个选项。一个简单的不那么安全,一个更复杂的更安全:

  • 您可以在数据库中创建一个文件夹,用于跟踪已登录的用户。然后,您可以在某人尝试登录之前或之后查询它,并相应地处理事件。当然,这种方式无法防止用户篡改javascript

  • 如果您想确保人们无法绕过您的阻止程序,您可以实施自定义身份验证,在此期间检查服务器上的数据库,并且仅在没有其他人登录时返回令牌


  • 创建一个UUID,并在每次登录时将其注册到数据库中。 然后检查是否匹配,如果不匹配,则注销。 您可以执行以下操作:

    import { v4 as uuid } from 'uuid';
    // on login
    this.uuidValue = uuid();
    //Add to db I would say realtime not firestore
    this.doCheck();
    //Check like
    private doCheck() {
      this.checkSub = this.db.object(`uuid/$ID`).valueChanges().subscribe((_uuid: any) => {
      if(this.uuidValue !== _uuid) {
        //logout
        this.checkSub.unsubscribe();