当我们想要使用当前经过身份验证的用户时,我们需要侦听firebase验证状态:
firebase.auth().onAuthStateChanged((user) => { ... });
是否在某些情况下使用firebase.auth()。currentUser api是正确的选择(而不是床上实践)?
firebase.auth().currentUser
主要用于获取当前登录用户的properties
。
这些属性包括displayName
email
emailVerified
phoneNumber
uid
等等。
我怀疑使用这两种方法的正确方法是在项目中的高级组件中。这是什么意思?
,假设我们有一个使用重火力点Auth webapp。
-
当用户访问这个webapp时,我想检查他是否登录了。因此,我将添加
onAuthStateChanged
来注册一个响应authentication state
中的变化的authentication event handler
。这应该添加到我的webapp的顶层组件之一。 -
如果
user
是null
(这意味着没有用户登录,我会将用户重定向到我的登录页面)。但是如果user
=null
,那么我想在应用程序范围内存储一些关于这个用户的信息,以便在我想要的任何组件中使用这个用户的信息。所以我们可以把一些user props
传递给redux状态。我的代码是:
//
import { getAuth, onAuthStateChanged } from "firebase/auth";
const auth = getAuth();
onAuthStateChanged(auth, (user) => {
if (user) {
// User is signed in, see docs for a list of available properties
// https://firebase.google.com/docs/reference/js/firebase.User
const uid = user.uid;
// ... SET REDUX STATE
} else {
// User is signed out
// ... window.location.href = '/login'
}
});
从理论上来说,您可以使用firebase.auth().currentUser
整个应用。然而,它通常被认为是不好的做法,因为你会触发intermediate state
当你不需要。如果你从一开始就将用户的属性设置为redux状态,那么一旦你想在你的web应用中使用用户的信息,就不会出现中间状态。