AngularFire Authentication中authState和user的区别是什么?
AngularFire中
authState与user的核心区别 AngularFireAuth提供的authState和user都是用于监听用户身份状态的可观察对象,未修改用户资料时二者返回的用户元数据完全一致,核心差异体现在触发逻辑和适用场景上:
- 触发逻辑不同
authState是对Firebase Auth原生onAuthStateChanged事件的直接封装,仅会在用户登录、登出、身份token刷新三类场景下推送新值,用户修改个人资料这类非核心身份变更不会触发推送。user是AngularFire在authState基础上做的扩展封装,除了上述三类身份变更场景外,还会监听updateProfile、updateEmail等用户资料修改操作,修改完成后会自动推送最新的用户对象,无需重新登录或手动刷新token。
- 适用场景不同
- 仅需要做登录状态判断、拿固定uid做权限校验的场景,优先用
authState,触发频率低性能开销更小。 - 需要实时响应用户主动修改的个人资料(比如修改昵称后页面同步更新)的场景,优先用
user,无需额外写刷新逻辑。
- 仅需要做登录状态判断、拿固定uid做权限校验的场景,优先用
你测试时二者返回的displayName结果一致,是因为测试过程中没有在登录状态下修改过用户的displayName、邮箱等资料,此时二者返回的用户数据没有差异,只有在登录后主动修改过用户资料时,才会出现authState返回旧值、user返回最新值的区别。
内容的提问来源于stack exchange,提问作者Hamza Qureshi
相关产品推荐
相关产品推荐

