当前位置: 首页 > 知识库问答 >
问题:

保持用户登录

孙星鹏
2023-03-14

我正在创建一个Ionic应用程序(iOS和带有电容的Android)。我在我的应用程序中添加了Firebase身份验证,但每次退出应用程序时,我都需要重新登录。

我看到了这个,但是没有太多的文档,并且我尝试了它但是没有工作。我不确定我正确地使用了它,或者在正确的地方添加了代码。https://firebase.google.com/docs/auth/web/manage-users?HL=en

我想过将用户信息保存在本地存储中,当应用程序加载时,检查是否有数据,如果有,则将用户移动到主屏幕,否则,呈现登录屏幕。但我不确定这是不是一个好的做法。

以下是我对用户进行签名的方式:

  async googleSignIn() {
    let googleUser = await Plugins.GoogleAuth.signIn();
    let credential = firebase.auth.GoogleAuthProvider.credential(googleUser.authentication.idToken);

    
    let userCredential = await this.afAuth.signInWithCredential(credential);
    return userCredential;
  }

我尝试使用app.component.ts中的文档中看到的内容,如下所示:

import { Component } from '@angular/core';
import { Router } from '@angular/router';
import firebase from 'firebase/app';

@Component({
  selector: 'app-root',
  templateUrl: 'app.component.html',
  styleUrls: ['app.component.scss'],
})

export class AppComponent {
  rootPage: 'login';
  constructor(private router: Router) { 
    firebase.auth().onAuthStateChanged((user) => {
      if(user) {
        this.router.navigate(['home']);
      } else { 
        this.router.navigate(['login']);
      }
    });
  }
}

它似乎没有“连接”任何东西,但我找不到很多信息。

共有1个答案

锺离俊雄
2023-03-14

Firebase身份验证可以自动持久化用户的身份验证状态,并在app重新启动/页面重新加载时恢复。但在某些环境中,默认情况下不启用此功能,您必须自己配置它,如关于身份验证状态持久性的文档所示。这应该是这样的形式:

firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL)

之后,您的OnAuthStateChanged应该开始工作。

另请参阅:

  • Ionic论坛上Ionic 4应用程序上firebase身份验证的持久性
  • 搜索firebase身份验证的这些结果持续存在。
 类似资料:
  • 这就是我想使用WebDriver执行的。 选中“保持用户登录”复选框登录站点 问题是当我关闭驱动程序并重新打开它时,我没有登录。 我的代码看起来像这样-

  • 问题内容: 我有一个内置于firebase和angular中的应用程序,并且希望能够在刷新页面后使用户保持登录状态。现在我有一个登录屏幕,其中包含两个基本输入字段,这些输入字段绑定到控制器 这一切都很好,很不错,并且可以,但是当用户刷新页面时,他们将被注销。有什么方法可以在加载控制器时查看用户是否已经登录并自动重定向?谢谢! 问题答案: 您现在拥有的代码可以处理用户登录的情况。要处理用户已经登录的

  • 问题内容: 安装组件时,我想根据用户登录的状态来呈现登录屏幕或应用程序。但是,每次刷新时,用户都会注销。我如何保持他们的登录状态? 应用组件: 这是我用来登录用户的方法(效果很好): 问题答案: 用户的令牌自动保存到本地存储中,并在加载页面时读取。这意味着,当您重新加载页面时,应该再次自动验证用户身份。 最可能的问题是您的代码未检测到此身份验证,因为构造函数在Firebase重新加载并验证用户凭据

  • 问题内容: 我正在尝试使用Selenium Web驱动程序和node js自动执行几个页面。我可以登录,但是登录后我想使用由Web驱动程序启动的同一会话,以便可以在受会话保护的页面上进行自动测试。这是我的尝试 登录后我不小心丢弃了浏览器吗? 问题答案: 您可能只在处理计时问题。硒移动 非常快 。比您作为用户进行交互的方式要快得多。因此,它通常以似乎无法预测的方式起作用。但这仅仅是因为Seleniu

  • 问题内容: 我的Web应用程序使用会话来存储有关用户登录后的信息,并在用户在应用程序中逐页浏览时维护该信息。在这个特定的应用程序,我存储,和人的。 我想在登录时提供“保持登录状态”选项,该选项会将cookie在用户的计算机上放置两周,当他们返回应用程序时,将使用相同的详细信息重新开始会话。 这样做的最佳方法是什么?我不想将其存储在cookie中,因为这似乎会使一个用户更容易伪造另一位用户的身份。

  • 本文向大家介绍利用JSP session对象保持住登录状态,包括了利用JSP session对象保持住登录状态的使用技巧和注意事项,需要的朋友参考一下 http协议本身是一种无状态的协议,也就是客户端连续发送的多个请求之间没有联系,下一次请求不关心上一次请求的状态。 而实际运用中却希望服务器能记住客户端请求的状态,比如在网上购物系统中,服务器端应该能够识别并跟踪每个登录到系统中的用户挑选并购买商品