Firebase auth:当我们需要使用同步api Firebase .auth()时.currentUser还是它总



当我们想要使用当前经过身份验证的用户时,我们需要侦听firebase验证状态:

firebase.auth().onAuthStateChanged((user) => { ... });

是否在某些情况下使用firebase.auth()。currentUser api是正确的选择(而不是床上实践)?

firebase.auth().currentUser主要用于获取当前登录用户的properties

这些属性包括displayNameemailemailVerifiedphoneNumberuid等等。

我怀疑使用这两种方法的正确方法是在项目中的高级组件中。这是什么意思?

,假设我们有一个使用重火力点Auth webapp。

  1. 当用户访问这个webapp时,我想检查他是否登录了。因此,我将添加onAuthStateChanged来注册一个响应authentication state中的变化的authentication event handler。这应该添加到我的webapp的顶层组件之一。

  2. 如果usernull(这意味着没有用户登录,我会将用户重定向到我的登录页面)。但是如果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应用中使用用户的信息,就不会出现中间状态。

相关内容

  • 没有找到相关文章