有时候,当我的应用程序启动时,互联网连接不好,用户就会被注销。
我不想这样..。我希望用户继续登录,即使由于互联网连接不好,应用程序没有正确启动。
"@angular/fire": "^5.1.0",我附加了我的AuthService代码,还有我的依赖项。我做错什么了?
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);
}
}"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"
},发布于 2022-06-05 13:34:09
当您在客户端应用程序中使用firebase时,将加载firebase脚本,然后它将检查上一次会话是否存在,然后在auth服务器上验证它。如果由于某种原因互联网连接失败,此进程将不会成功,因此事件onAuthStateChanged将不会被触发,这将导致您的应用程序状态处于未登录状态。
您的代码基于第三方库(我不知道它的内部结构),它封装了火基功能,并且可能会监听火基事件。
我建议您在用户登录时将火基令牌保存在localStorage中,如果internet连接失败,您可以尝试使用保存在localStorage中的令牌登录。或者您可以收听网络连接事件。请检查一下这个文档
https://stackoverflow.com/questions/72506666
复制相似问题