在 Vue.js 中,在哪里放置代码来设置 Firebase 身份验证状态持久性?

2023-11-30

Overview

我正在 Quasar/Vue.js 和 Firebase 中构建一个需要对用户进行身份验证的 Web 应用程序。

我想要实现的目标

一个非常常见的功能 - 即使用户关闭浏览器/选项卡后仍保持登录状态。

可能的解决方案

我知道我可以使用本地存储 or cookies设置用户身份验证状态。但是,我想允许 Firebase 身份验证为我执行此操作(如果它可以执行此操作)。

我检查了这方面的文档 -https://firebase.google.com/docs/auth/web/auth-state-persistence它们很好,只是我无法弄清楚将其中提到的这段代码放在哪里:

firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL)
  .then(function() {
    // New sign-in will be persisted with session persistence.
    return firebase.auth().signInWithEmailAndPassword(email, password);
  })
  .catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
  });

我不确定将其放置在以下位置的何处:

  • onAuthStatechanged听众?
  • 在 App.vue(根 Vue)实例中?
  • 别的地方?

如果有人能提供帮助,我会很高兴。谢谢。


只要你有,我都会这么做firebase.initializeApp(). Eg

firebase.initializeApp({
  // config goes here
});

export const auth = firebase.auth()

auth.setPersistence(firebase.auth.Auth.Persistence.LOCAL)

注意LOCAL已经是网络应用程序中的默认设置。

你真的不需要等待那个承诺。来自docs

这将返回一个承诺,一旦状态完成从一种类型的存储复制到另一种类型的存储,该承诺将得到解决。更改持久性后调用登录方法将等待持久性更改完成在将其应用到新的身份验证状态之前。


其模块化版本(v9+)如下所示......

import { initializeApp } from "firebase/app";
import {
  browserLocalPersistence,
  getAuth, 
  setPersistence
} from "firebase/auth";

const app = initializeApp({
  // config goes here
})

export const auth = getAuth(app);

setPersistence(auth, browserLocalPersistence)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Vue.js 中,在哪里放置代码来设置 Firebase 身份验证状态持久性? 的相关文章

随机推荐

  • Laravel 5.7 电子邮件验证路由

    Laravel 5 7 添加了电子邮件验证功能 但在我的项目中 我不使用默认的路由名称 而是出于自己的目的添加了前缀 现在 当我添加以下代码来添加验证路由时 它显示错误 Auth routes verify gt true 错误消息表明ve
  • Python下载文件

    我不确定该怎么做 一种方法是 import urllib request urllib request urlretrieve www example com file tar file tar 另一种方法是 import urllib r
  • 调用原生 Javascript 类型的方法,无需使用 () 包装

    在 Javascript 中 我们可以直接调用字符串文字上的方法 而无需将其括在圆括号内 但不适用于其他类型 例如数字或函 数 这是一个语法错误 但是 Javascript 词法分析器需要将这些其他类型括在圆括号中是否有原因 例如 如果我们
  • 这个承诺看起来正确吗?

    这似乎应该将数据传递到我的范围 但事实并非如此 下面的代码是否有任何直接跳出的错误 angular module Lunch services factory LunchMates q http gt LunchMates getLunch
  • 如何在 PHP 中使用 scandir 只获取图像?

    有没有办法只获取带有扩展名的图像jpeg png gif使用时等 dir tmp files1 scandir dir 您可以使用glob images glob tmp jpeg gif png GLOB BRACE 如果您需要不区分大小
  • 将 array_multisort() 与自定义函数一起使用[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我有以下数组 我想根据另一个数组对其进行排序 而不是DESC or ASC array array note gt array test test1 test2 test3 test4
  • 在具有 Html 服务的站点中显示电子表格数据 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我显示 我想做的事情与此类似tutorial但我不想使用 UI 服务来显示表格 而是想使用 HTML 服务 有人从这个question提到您可以使用
  • 不使用 try except 填充字典

    假设我有字典 并且我想用一些键和值填充它 第一个字典是空的 假设我需要这个字典作为计数器 例如计算字符串中的一些键 我有这样的方法 myDic try myDic desiredKey 1 except KeyError myDic des
  • 如何让 Apache POI 和 JAXB 协同工作?

    java lang ClassNotFoundException org apache xmlbeans XmlObject 当我运行我的代码时出现该错误 好吧 没关系 我只是忘记获取 XMLBeans 但它已经退役 我在他们的档案中找不到
  • 在javascript中调用并应用[重复]

    这个问题在这里已经有答案了 可能的重复 链调用和apply在一起是什么意思 我发现了一些这样的代码 function fun return Function prototype call apply Array prototype slic
  • 选择具有所有缺失值的字符变量

    我有一个包含大约 3 000 个变量的 SAS 数据集 我想删除所有值都缺失的字符变量 我知道如何对数字变量执行此操作 我特别想知道字符变量 我需要使用基本 SAS 来完成这项工作 但这可能包括 proc SQL 这就是为什么我也将这个标记
  • perl 从日期中减去一个月

    我得到格式为 dd mm YYYY 的日期 并尝试使用 Perl 减去一个月 示例 12 07 2013 gt 12 06 2013 30 09 2013 gt 31 08 2013 我应该使用 Date Calc 吗 有任何想法吗 Tha
  • C#中如何获取CPU使用率?

    我想获取 C 中应用程序的总体 CPU 使用率 我找到了很多方法来深入了解进程的属性 但我只想要进程的 CPU 使用率 以及您在 TaskManager 中获得的总 CPU 量 我怎么做 您可以使用性能计数器班级来自系统诊断 像这样初始化
  • Haskell 中的大规模设计? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 设计 构造大型函数式程序 尤其是在 Haskell 中 的好方法是什
  • 获取字符串列表的哈希值,无论顺序如何

    我想写一个函数GetHashCodeOfList 它返回字符串列表的哈希码 无论顺序如何 给定 2 个具有相同字符串的列表应该返回相同的哈希码 ArrayList list1 new ArrayList list1 Add String1
  • 将多个 XML 转换为 JSON 列表

    我想使用 PowerShell 脚本将具有相同 XML 属性格式的多个 XML 文件转换为 JSON 文件 这个想法是创建一个 JSON 列表 其中每个项目都是 XML 文件的 JSON 表示形式 可行吗 输入和输出的示例 Input Fi
  • 尝试在托管 bean 构造函数中访问 @EJB bean 时出现 NullPointerException

    我有一个 EJB 服务 Stateless public class SomeService 我想将其注入到 viewscoped bean 中并用它进行初始化 ManagedBean ViewScoped public class Vie
  • (ListView?)-像 Windows 资源管理器中那样进行控制

    我想知道是否有任何方法可以在插入设备时制作一个类似于 Windows 资源管理器自动启动的控件 我原以为这可能是一个或多或少经过修改的列表视图控件 但我无法通过谷歌找到任何东西 我还检查了许多 CodeProject 页面 有谁知道我在哪里
  • 将应用了主题对话框的 Activity 定位在特定的 x、y 位置

    我想将对话框放置在屏幕上的特定位置 从顶部开始 10px 从let开始 5px 我确实应用了主题并添加了android scrollX android scrollY 但似乎不起作用 有什么解决办法吗 下面是我的样式 xml
  • 在 Vue.js 中,在哪里放置代码来设置 Firebase 身份验证状态持久性?

    Overview 我正在 Quasar Vue js 和 Firebase 中构建一个需要对用户进行身份验证的 Web 应用程序 我想要实现的目标 一个非常常见的功能 即使用户关闭浏览器 选项卡后仍保持登录状态 可能的解决方案 我知道我可以