首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当应用程序在糟糕的互联网上发布时,角6 web应用程序注销用户。

当应用程序在糟糕的互联网上发布时,角6 web应用程序注销用户。
EN

Stack Overflow用户
提问于 2022-06-05 10:45:10
回答 1查看 46关注 0票数 0

有时候,当我的应用程序启动时,互联网连接不好,用户就会被注销。

我不想这样..。我希望用户继续登录,即使由于互联网连接不好,应用程序没有正确启动。

代码语言:javascript
复制
"@angular/fire": "^5.1.0",

我附加了我的AuthService代码,还有我的依赖项。我做错什么了?

代码语言:javascript
复制
import { Router } from '@angular/router';
import { Injectable } from '@angular/core';
import { AngularFireAuth } from '@angular/fire/auth';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';

@Injectable()
export class AuthService {
  private user: Observable<firebase.User>;
  public userDetails: firebase.User = null;
  userAuthDoneSubject = new Subject();

  constructor(
    private firebaseAuth: AngularFireAuth) {
    this.user = firebaseAuth.authState;

    this.user.subscribe(
      (userDetails) => {
        if (userDetails) {
          this.userDetails = userDetails;
        }
        else {
          this.userDetails = null;
        }
        this.userAuthDoneSubject.next();
      },(error) => {this.userAuthDoneSubject.error("AuthService:error authenticate"); }
    );
  }
  isLoggedIn() {
    if (this.userDetails == null ) {
      return false;
    } else {
        return true;
      }
    }
 
    logout() {
       return this.firebaseAuth.auth.signOut();
    }

  signinUser(customToken:any){
    return this.firebaseAuth.auth.signInWithCustomToken(customToken)
  }

  getJWT() {
    return this.firebaseAuth.auth.currentUser.getIdToken(true);
  }

}
代码语言:javascript
复制
"dependencies": {
  "@agm/core": "^1.0.0",
  "@angular/animations": "^6.1.0",
  "@angular/common": "^6.1.0",
  "@angular/compiler": "^6.1.0",
  "@angular/core": "^6.1.0",
  "@angular/fire": "^5.1.0",
  "@angular/forms": "^6.1.0",
  "@angular/http": "^6.1.0",
  "@angular/platform-browser": "^6.1.0",
  "@angular/platform-browser-dynamic": "^6.1.0",
  "@angular/router": "^6.1.0",
  "@types/googlemaps": "^3.30.19",
  "angular2-multiselect-dropdown": "^4.6.2",
  "core-js": "^2.5.4",
  "css-toggle-switch": "^4.1.0",
  "firebase": "^5.5.9",
  "ng-lazyload-image": "^6.1.0",
  "ngx-owl-carousel-o": "^0.1.2",
  "ngx-page-scroll-core": "^6.0.2",
  "rxjs": "^6.0.0",
  "rxjs-compat": "^6.3.3",
  "zone.js": "~0.8.26"
},
EN

回答 1

Stack Overflow用户

发布于 2022-06-05 13:34:09

当您在客户端应用程序中使用firebase时,将加载firebase脚本,然后它将检查上一次会话是否存在,然后在auth服务器上验证它。如果由于某种原因互联网连接失败,此进程将不会成功,因此事件onAuthStateChanged将不会被触发,这将导致您的应用程序状态处于未登录状态。

您的代码基于第三方库(我不知道它的内部结构),它封装了火基功能,并且可能会监听火基事件。

我建议您在用户登录时将火基令牌保存在localStorage中,如果internet连接失败,您可以尝试使用保存在localStorage中的令牌登录。或者您可以收听网络连接事件。请检查一下这个文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72506666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档