【发布时间】:2020-12-07 15:12:27
【问题描述】:
我是 angular 和 firebase 的新手,并且仅在成功的身份验证后才尝试将用户数据放入表中 - 如果您正确登录,该表会显示数据,如果没有,您将看不到这些数据。我尝试在我的 AuthService 中进行简单的 firebase 登录和注销:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { AngularFireAuth } from '@angular/fire/auth';
import { Router } from '@angular/router';
import * as firebase from 'firebase/app';
@Injectable({
providedIn: 'root',
})
export class AuthService {
constructor(private router: Router, private fireAuth: AngularFireAuth) {}
onLogin(email: string, password: string) {
firebase
.auth()
.signInWithEmailAndPassword(email, password)
.then(function () {
console.log('Succes');
})
.catch(function (error) {
console.log(error);
});
}
async onLogout() {
try {
await firebase.auth().signOut();
this.router.navigate(['./']);
} catch (error) {
console.log(error);
}
}
}
这是我的 UserService 负责在表格中显示用户:
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import { take } from 'rxjs/operators';
import { User } from 'src/app/models/user.model';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root',
})
export class UserService {
constructor(private http: HttpClient) {}
fetchUsers() {
let result = new Subject<User[]>();
this.http
.get('https://fir-login-1416c.firebaseio.com/users.json')
.subscribe((users) => {
let usersAr = Object.keys(users).map((id) => new User(users[id]));
result.next(usersAr);
});
return result.pipe(take(1));
}
addUser(user: User) {
let postData: User = user;
this.http
.post<{ name: string }>(
'https://fir-login-1416c.firebaseio.com/users.json',
postData,
{
observe: 'response',
}
)
.subscribe(
(responseData) => {
console.log(responseData.body.name);
},
(error) => {
console.log(error);
}
);
this.fetchUsers();
}
deleteUser() {
// Later
}
}
我的 firebase 数据库规则如下所示:
{
"rules": {
".write": "auth !== null",
".read": "auth !== null"
}
}
但问题是当我使用正确的数据登录并导航到用户表的页面时,我看到空表和控制台显示 this errors。 看起来身份验证根本不起作用,或者我只是做错了什么。 如果您对如何执行此操作有任何建议,请给我 :) 谢谢!
【问题讨论】:
标签: javascript angular firebase firebase-realtime-database firebase-authentication