angular - angularfire2/auth signOut 后如何断开与 Google 身份验证的连接?

标签 angular firebase firebase-authentication angularfire angularfire2

我正在使用 Angular 和 Firebase 构建网站。我使用 Angularfire2 和 AngularFireAuth 库以及 GoogleAuthProvider (Google) 作为我的身份验证提供商。

这是我的服务代码:

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { AngularFireAuth } from 'angularfire2/auth';
import * as firebase from 'firebase/app';

@Injectable()
export class AuthenticationService {
  user: Observable<firebase.User>;

  constructor(public afAuth: AngularFireAuth) {
    this.user = afAuth.authState;
  }

  login() {
    this.afAuth.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider());
  }

  logout() {
    this.afAuth.auth.signOut();
  }
}

当用户“注销”我的网站时,它可以正常工作,但似乎“缓存”了 Google 身份验证。因此,当他们第二次尝试登录时,我遇到了一些问题:

  1. 用户不得选择其他 Google 帐户登录。
  2. 用户自动登录...这似乎是一个安全问题。另一位用户可以使用同一台共享 PC,并以之前用户的身份登录,而无需为此输入密码。

我做错了什么?有什么方法可以阻止 angularfire2/auth 缓存这些凭据吗?当用户退出我的网站时,有没有办法让他们退出 Google?

最佳答案

这是意料之中的,因为它们是 2 个独立的系统,并且每个 Auth 状态都是单独存储的。 Firebase Auth signOut 让您退出 Firebase。要退出 Google,您必须转到 google 并退出。如果这对您的应用至关重要,您可以随时在 Firebase Auth 上注销,重定向到谷歌注销页面:

auth.signOut().then(() => {
  window.location.assign('https://accounts.google.com/Logout');
}, (error) => {
  console.log(error);
});

关于angular - angularfire2/auth signOut 后如何断开与 Google 身份验证的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45868986/

相关文章:

火力地堡,OAuth,榆树

css - 如何让 mat-table 自动调整大小以适合标题

javascript - 通过 forkJoin 和响应识别的并行 http 请求

angular - 从 Angular 5 中的 URL 获取数据

swift - 如何在swift中离线缓存图像(没有互联网连接)?

swift - 如何使用 Swift 在 Firebase 中对密码进行哈希处理?

firebase - `firebase_tools.firestore .delete` 需要一个 token ,但该 token 从何而来?

Firebase 实时数据库 : What's the right security rule for a landing page?

angular - 如何在 Angular 2中为不同的路线使用不同的路由器导出

swift - 从自动 ID 数据库子项中检索数据