gpt4 book ai didi

javascript - Firebase 身份验证不持久

转载 作者:太空狗 更新时间:2023-10-29 17:44:25 33 4
gpt4 key购买 nike

页面刷新后,身份验证似乎不会持续存在。即使在使用 firebase.auth.Auth.Persistence.LOCAL 之后。

每当我登录到我的应用程序时,它都会成功地将我重定向到仪表板。但是,当页面刷新后,无法访问仪表板。

这是我的代码。

文件名:login.component.ts

import { Router } from '@angular/router';
import { Component, OnInit } from '@angular/core';

import * as firebase from 'firebase/app';
import { Observable } from 'rxjs/Observable';
import { AngularFireAuth } from 'angularfire2/auth';
import { AngularFirestore } from 'angularfire2/firestore';

@Component({
...
})
export class LoginComponent implements OnInit {

email: string = '';
password: string = '';

constructor(public afAuth: AngularFireAuth, private router: Router, private fb: FormBuilder) {}

signIn(credentials) {
this.email = credentials.email;
this.password = credentials.password;

this.afAuth.auth.setPersistence(firebase.auth.Auth.Persistence.LOCAL).then(() => {
this.afAuth.auth.signInWithEmailAndPassword(this.email, this.password).then(() => {
this.router.navigate(['dashboard']);
}).catch((err) => {
...
})
}).catch((err) => {
...
})
}

ngOnInit() {}

}

文件名:auth.guard.ts

import { Injectable } from '@angular/core';
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { Observable } from 'rxjs/Observable';

import { AngularFireAuth } from 'angularfire2/auth';

@Injectable()
export class AuthGuard implements CanActivate {

constructor(private router: Router, private afAuth: AngularFireAuth) {}

canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
var authed = this.afAuth.auth.currentUser;

if (authed) {
return true;
} else {
this.router.navigate(['/']);
return false;
}
}
}

附加信息:

@angular/animations: 5.0.0
@angular/common: 5.0.0
@angular/compiler: 5.0.0
@angular/core: 5.0.0
@angular/forms: 5.0.0
@angular/http: 5.0.0
@angular/platform-browser: 5.0.0
@angular/platform-browser-dynamic: 5.0.0
@angular/router: 5.0.0
angular2-materialize: 15.1.10
angularfire2: 5.0.0-rc.3
core-js: 2.4.1
firebase: 4.6.1
hammerjs: 2.0.8
jquery: 2.2.4
materialize-css: 0.100.2
rxjs: 5.5.2
zone.js: 0.8.14

预期结果:

http://localhost:4200/dashboard(登录后可访问)

当前结果:

http://localhost:4200/dashboard(登录后无法访问;重定向到主页)

我哪里做错了还是其他什么地方?

最佳答案

您需要使用 onAuthStateChanged 监听器来检测初始身份验证状态:

firebase.auth().onAuthStateChanged(user => {
if (user) {
// User is signed in.
} else {
// User is signed out.
}
});

关于javascript - Firebase 身份验证不持久,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47134906/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com