无法将中间件与 Firebase 和 NuxtJS 3 一起使用

2024-05-22

我正在尝试在示例项目中使用 Firebase 身份验证。身份验证按预期工作,但是一旦我想使用中间件来阻止用户访问管理页面或在已经登录的情况下访问登录页面,这是不可能的。

我已经尝试了几个小时,但没有任何效果。

这是我的package.json:

{
  "private": true,
  "scripts": {
    "build": "nuxt build",
    "dev": "nuxt dev",
    "generate": "nuxt generate",
    "preview": "nuxt preview"
  },
  "devDependencies": {
    "nuxt": "3.0.0-rc.6"
  },
  "dependencies": {
    "firebase": "^9.9.2"
  }
}

My App.vue

<template>
  <div>
    <NuxtPage />
  </div>
</template>

我的文件夹:

app.vue
nuxt.config.ts
package.json
...
pages/
-- index.vue
-- login.vue
-- register.vue
composables/
-- useFirebase.ts
-- useFirebaseUser.ts
plugins/
-- firebase.client.ts

useFirebase.ts仅包含 Firebase 函数。

useFirebaseUser here:

import type {User} from "firebase/auth";

export const useFirebaseUser = (init?:User|null) => useState<User|null>("user", () => init ?? null);

Now my firebase.client.ts plugin:

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

export default defineNuxtPlugin(async (nuxtApp) => {
    const firebaseConfig = {
        // ...
    };

    const app = initializeApp(firebaseConfig);
    const auth = getAuth(app);
    const firebaseUser = useFirebaseUser(auth.currentUser);
    onAuthStateChanged(auth, (user) => {
        console.log("auth state changed =", user);
        firebaseUser.value = user;
    });
});

我尝试过使用addRouteMiddleware在插件内,但使用它的页面说它不存在......

我试图在中声明一个中间件middleware目录和使用getAuth()来自 Firebase,但它说没有初始化 Firebase 应用程序。我认为插件是在中间件之后加载的。

我尝试通过以下方式提供变量:

return {
 provide: { auth: () => getAuth(app) }
}

在插件的末尾,但当我通过中间件访问它时,它说“$auth”不是一个函数useNuxtApp.

我也尝试过:

nuxtApp.provide("auth", getAuth(app))

这根本不起作用getAuth().currentUser获取其值一次onAuthStateChanged在页面加载后执行,使其无用,因为它总是给出null or undefined.

有人知道使用 Firebase 身份验证中间件的神奇方法吗?


None

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

无法将中间件与 Firebase 和 NuxtJS 3 一起使用 的相关文章

随机推荐

  • 如何使用 SQLite R-Trees 将简单空间索引移植到 Postgres?

    我通过遵循 SQLite R Tree 实现了一个基于边界框的简单空间索引模式tutorial https www sqlite org rtree html 这给了我以下架构 CREATE VIRTUAL TABLE events reg
  • 如何从当前 .NET 表单/应用程序发送密钥 F12

    我非常确定以下按钮激活的表单代码应该在我的 C 应用程序中引发 Control F12 SendKeys F12 但它似乎并没有继续进入 Windows shell 并激活另一个正在侦听它的程序 我的键盘可以用 看起来发送键在某处被拦截 并
  • 如何调试参数化 SQL 查询

    我使用 C 连接到数据库 然后使用 Ad hoc SQL 来获取数据 这个简单的 SQL 查询非常方便调试 因为我可以记录 SQL 查询字符串 如果我使用参数化 SQL 查询命令 有没有办法记录 sql 查询字符串以进行调试 我想就是这样的
  • 是否可以在打字稿中重用泛型类型?

    我想做这样的事情 namepace Namespace
  • 使用Python处理Sqlite数据库中的换行符“\n”?

    我有一个名为 test db 的 Sqlite 数据库 其中包含两个表 其结构如下 表 1 ID 整数主键自动增量 名称 varchar 500 颜色 varchar 500 表2 ID INTEGER PRIMARY KEY AUTOIN
  • React-Router v5 History.push 不触发组件

    很抱歉朋友们又问这个问题了 我找到了解决这个问题的几个方法 但他们让我很困惑 我只是想问一个优雅的方法来做到这一点 正如你通过标题所理解的 我有一个关于反应路由的问题 让我解释 我有一个按钮 其名称是Login 单击按钮后 我执行了一些逻辑
  • 即时应用程序上的文本转语音崩溃

    我正在实现一个即时应用程序 该应用程序利用 Android 设备上提供的文本转语音功能 我已经设法得到了TextToSpeech按照 Android 开发博客文章中详细说明的说明 实例已初始化并可在非即时应用程序中正常工作Android 中
  • ' aria-label='keras 模型拟合:ValueError:无法找到可以处理输入的数据适配器:'> keras 模型拟合:ValueError:无法找到可以处理输入的数据适配器:

    我正在构建一个简单的 CNN 模型用于多类分类 训练和测试数据位于data path根据所需的类子目录flow from directory的函数ImageDataGenerator 这是我根据数据构建和训练模型的代码 from tenso
  • 使用 Symfony 3 / Doctrine 进行属性形式的一对多对一

    问题是这样的 我有一个包含 3 个类的模型 person 人员 工作 job 一个人可以有多个工作 任何工作与人的关系都可以有 date start 属性 date end 和 comment 因此 我使用持有这些属性的可连接 person
  • System.Net.HttpListenerException:无法侦听前缀“http://localhost:8080”

    我正在运行以下代码Scott Allen 的 ASP Net 基础课程 http www pluralsight com courses aspdotnet mvc5 fundamentals using System using Micr
  • 在 IE 中使用
    标签时,填充不起作用

    我在我的应用程序中使用 HTML5 标签 标签的填充在 chrome ff 和 safari 中工作正常 但在 IE 中不起作用 我尝试添加显示 块 与部分样式 但它没有用 有什么解决办法吗 许多旧浏览器不理解 HTML5 标签 例如sec
  • 创建新的合并请求时,GitLab 不运行 CI/CD 管道

    当我执行以下操作时 我的 GitLab CI CD 就会运行 click Create merge request 创建分支中的每个提交 当合并请求分支合并到master时 我想跳过第一个管道 在创建合并请求时 因为我想优化 紧固 我的 C
  • 结构等效和名称等效

    我似乎无法准确理解名称等效是什么 我很确定我的结构性下降了 我的教授举的一个例子是这样的 Type TI integer Type TTI TI a integer b TTI f ref float g ref float a 和 b 都
  • Dataframe unstack 性能 - pandas

    我正在尝试拆开数据框 它工作正常 但问题是我正在处理 CSV 文件中的巨大数据集 约 10 亿 这是示例数据集 236539 48512569874 Name Danny 236539 48512569874 Class 12 236539
  • LINQ to XML - 如何正确使用 XDocument

    现在我首先要说的是 这确实是一项任务 然而 在我遇到 Linq to XML 语法之前 我几乎已经完成了它 我有 2 个课程 曲目和 CD 现在作为作业的一部分 我创建了一张 CD 然后向其中添加了一些曲目 在搜索了大量完美解释了如何从 x
  • 由于iOS6中恢复了谷歌地图,MKMapView会在iOS6中自动使用谷歌地图吗?

    由于苹果已经在iOS6中恢复了谷歌地图 如果我使用MKMapView在我的 iPhone 应用程序中 它会自动使用谷歌地图吗 如果您想在应用程序中使用 Google 地图 则应使用适用于 iOS 的 Google 地图 SDK https
  • 节省页面加载时间的提示[重复]

    这个问题在这里已经有答案了 我的问题 削减那些不必要的 kb 并使页面加载速度更快的最佳方法是什么 全部是什么优化实践 编码实践 在js php中 如果执行可以使您的页面更轻 为什么我问这个 我读了这篇关于 jquery js 与 jque
  • 将 2D 数组映射到 1D 数组

    我想用一维数组来表示一个二维数组 函数将传递两个索引 x y 和要存储的值 这两个索引代表一维数组的单个元素 并相应地设置它 我知道一维数组需要具有 arrayWidth arrayHeight 的大小 但我不知道如何设置每个元素 例如 如
  • 测试 hdf5/c++ 中的组是否存在

    我正在打开一个现有的 HDF5 文件来附加数据 我想向那个叫做的小组保证 A存在以供后续访问 我正在寻找一种简单的方法来创建 A有条件地 如果不存在则创建并返回新组 或者返回现有组 一种方法是测试 A存在 我怎样才能高效地做到这一点 根据
  • 无法将中间件与 Firebase 和 NuxtJS 3 一起使用

    我正在尝试在示例项目中使用 Firebase 身份验证 身份验证按预期工作 但是一旦我想使用中间件来阻止用户访问管理页面或在已经登录的情况下访问登录页面 这是不可能的 我已经尝试了几个小时 但没有任何效果 这是我的package json