部署 next-firebase-auth-edge 到 Firebase Hosting 与 Cloud Run:完整实战指南

发布时间:2026/8/21 12:50:19

部署 next-firebase-auth-edge 到 Firebase Hosting 与 Cloud Run:完整实战指南
部署 next-firebase-auth-edge 到 Firebase Hosting 与 Cloud Run完整实战指南【免费下载链接】next-firebase-auth-edgeNext.js Firebase Authentication for Edge and Node.js runtimes. Compatible with latest Next.js features.项目地址: https://gitcode.com/gh_mirrors/ne/next-firebase-auth-edgenext-firebase-auth-edge 是专为 Next.js 打造的 Firebase Authentication 认证库可同时运行在 Edge 与 Node.js 运行时并兼容最新的 Next.js 特性。本文是一份面向新手的完整实战指南手把手带你完成 next-firebase-auth-edge 部署从 Firebase Hosting 的__sessionCookie 配置到 Google Cloud Run 的免密钥自动认证全程给出可直接复用的配置代码与部署命令。无论你是第一次接触 Next.js 登录功能还是想切换部署平台这份 Firebase Hosting 与 Cloud Run 双方案指南都能帮你少踩坑、快速上线。next-firebase-auth-edge 是什么为什么值得在生产环境使用简单来说next-firebase-auth-edge 帮你把 Firebase 登录状态无缝接入 Next.js 应用。它通过一个中间件authMiddleware自动完成以下工作 自动创建/api/login与/api/logout接口无需手写认证 API 路由 Token 过期时自动刷新浏览器认证 Cookie 使用旋转签名密钥rotating keys对 Cookie 签名降低被破解的风险✅ 在每次请求时校验用户 Cookie 的有效性️ 提供handleValidToken、handleInvalidToken、handleError回调灵活定制登录跳转逻辑官方文档还提供了一个开箱即用的示例工程位于examples/next-typescript-starter/其核心配置集中在proxy.ts与config/server-config.ts两个文件中非常适合作为部署前的参照。部署前的 4 项准备工作无论选择哪个平台你都需要先完成以下基础配置创建 Firebase 项目并在项目中新建一个 Web 应用获取 Web API KeyapiKey启用 Firebase Authentication并开启你需要的登录方式如 Google、邮箱密码等生成服务账号私钥进入「项目设置 → 服务账号 → 生成新的私钥」下载 JSON 凭据其中包含projectId、clientEmail、privateKey配置授权域名在「Authentication → 设置 → 授权域名」中添加你的线上域名如果想先跑通一个完整示例可以克隆示例仓库examples/next-typescript-starter即对应仓库中的同名目录git clone https://gitcode.com/gh_mirrors/ne/next-firebase-auth-edge按examples/next-typescript-starter/README.md的说明填充环境变量即可。方案一部署到 Firebase Hosting完整步骤Firebase Hosting 是最省心的托管方式但有一个关键限制必须提前了解。第一步理解 Firebase Hosting 的 Cookie 限制Firebase Hosting 默认会剥离除__session之外的所有 Cookie。也就是说你的认证 Cookie 名字必须是__session否则登录状态将无法持久化。同时由于该限制Firebase Hosting 环境不支持多 Cookie 模式必须将enableMultipleCookies设为false。第二步配置认证中间件核心代码在项目根目录创建proxy.ts如果你使用 Next.js 14 或 15则创建middleware.ts并导出middleware函数写入以下配置import { NextRequest } from next/server; import { authMiddleware } from next-firebase-auth-edge; export async function proxy(request: NextRequest) { return authMiddleware(request, { cookieName: __session, // Firebase Hosting 必须使用 __session loginPath: /api/login, logoutPath: /api/logout, apiKey: 你的-Firebase-API-Key, cookieSignatureKeys: [至少32字节长度的签名密钥], cookieSerializeOptions: { path: /, httpOnly: true, secure: false, sameSite: lax as const, maxAge: 12 * 60 * 60 * 24, }, serviceAccount: { projectId: 你的项目ID, clientEmail: 你的服务账号邮箱, privateKey: -----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n, }, }); } 提示cookieSignatureKeys建议使用两个密钥当前密钥 上一个密钥以实现无感轮换。生产环境请通过环境变量注入不要硬编码。第三步在服务端组件中读取登录状态认证中间件配置好后你可以通过getTokens在 Server Component、Server Action 或 API Route 中读取当前用户信息import { getTokens } from next-firebase-auth-edge; const tokens await getTokens(cookies(), { apiKey: 你的-Firebase-API-Key, cookieName: __session, cookieSignatureKeys: [至少32字节长度的签名密钥], serviceAccount: { /* 同上 */ }, });如果tokens为空说明用户未登录否则可通过tokens.decodedToken获取 uid、邮箱等身份信息。更完整的用法可参考官方文档中的服务端组件指南docs/pages/docs/usage/server-components.mdx。第四步构建并发布到 Firebase Hosting本地确认功能正常后使用 Firebase CLI 一键部署firebase login firebase init hosting # 按提示关联 Firebase 项目 npm run build firebase deploy --only hosting部署完成后你的 Next.js 应用就会运行在 Firebase 提供的 CDN 域名上认证 Cookie 由__session承载登录流程即可正常工作。方案二部署到 Google Cloud Run完整步骤如果你的应用需要更灵活的运行时、自定义域名或更高的并发能力Google Cloud Run 是绝佳选择。而且 next-firebase-auth-edge 在 Cloud Run 上有一个杀手级特性——无需手动配置服务账号私钥。第一步开通 IAM Service Account Credentials API这是免密钥认证的前提。在 Google Cloud 控制台中找到IAM Admin → IAM Service Account Credentials API点击启用。第二步为默认计算服务账号授权 signBlob 权限进入IAM 管理页面找到 Cloud Run 使用的默认计算服务账号为其关联的角色添加iam.serviceAccounts.signBlob权限。授权完成后库就能自动代表该服务账号完成 Token 签名与验证。第三步省略 serviceAccount享受免密钥配置完成上面两步后authMiddleware中的serviceAccount参数可以直接省略——next-firebase-auth-edge 会自动从 Cloud Run 环境中提取凭据。对比 Firebase Hosting你甚至不需要把私钥放进环境变量安全系数更高export async function proxy(request: NextRequest) { return authMiddleware(request, { loginPath: /api/login, logoutPath: /api/logout, apiKey: 你的-Firebase-API-Key, cookieName: AuthToken, // Cloud Run 没有 Cookie 名限制 cookieSignatureKeys: [至少32字节长度的签名密钥], cookieSerializeOptions: { path: /, httpOnly: true, secure: false, sameSite: lax as const, maxAge: 12 * 60 * 60 * 24, }, // 无需 serviceAccount自动从 Cloud Run 环境获取 }); }注意apiKey仍然必须提供。Cookie 名在 Cloud Run 上没有__session限制可以自由命名为AuthToken并且推荐开启enableMultipleCookies: true以承载更大的自定义 Claims。第四步用 Dockerfile 容器化应用Cloud Run 以容器方式运行服务。示例项目examples/next-typescript-starter/Dockerfile提供了一个可直接借鉴的镜像配置FROM node:18.19.0-alpine WORKDIR /usr/app COPY . . RUN yarn install --production RUN yarn build CMD [ yarn, start ]构建镜像后执行以下命令完成 Cloud Run 部署gcloud run deploy next-auth-app \ --image gcr.io/你的项目ID/next-auth-app \ --platform managed \ --region asia-east1 \ --allow-unauthenticated部署完成后访问 Cloud Run 分配的 HTTPS 域名登录、登出、自动刷新全部开箱即用。Firebase Hosting 还是 Cloud Run一张表帮你决策对比维度Firebase HostingGoogle Cloud Run配置难度⭐ 低CLI 一键部署⭐⭐⭐ 需先配置 IAM 与容器Cookie 名必须为__session可自定义如AuthToken多 Cookie 模式❌ 不支持✅ 支持推荐开启服务账号密钥需手动传入serviceAccount免密钥自动从环境获取适用场景纯静态 SSR 轻量应用需要灵活运行时、高并发场景简单建议想最快上线、不想碰 Docker选 Firebase Hosting追求免密钥安全与运行灵活性选 Cloud Run。高频问题与排错锦囊Q1部署到 Firebase Hosting 后登录状态总是丢失检查是否将cookieName设置为__session并把enableMultipleCookies设为false。两者缺一不可详见官方文档docs/pages/docs/usage/firebase-hosting.mdx。Q2Cloud Run 上报 Failed to sign blob 之类的权限错误确认已启用 IAM Service Account Credentials API并且默认计算服务账号拥有iam.serviceAccounts.signBlob权限。Q3使用 Next.js 14/15 应该写middleware.ts还是proxy.tsNext.js 14/15 使用middleware.ts并导出middleware函数Next.js 16 起改名为proxy.ts并导出proxy。两者的authMiddleware参数完全一致参考文档docs/pages/docs/usage/middleware.mdx即可。Q4HTTPS 环境下 Cookie 如何配置将cookieSerializeOptions.secure设为true通过环境变量控制其余保持不变。总结到此你已经掌握了 next-firebase-auth-edge 部署的两条完整路径Firebase Hosting 方案的核心是牢记__sessionCookie 限制与单 Cookie 模式Cloud Run 方案的核心是开通 IAM API 并授权signBlob权限从而享受免密钥认证。建议先从examples/next-typescript-starter/示例跑通本地流程再按本文步骤逐项部署遇到问题时对照文末的排错清单即可快速定位解决。祝你的 Next.js 应用顺利上线【免费下载链接】next-firebase-auth-edgeNext.js Firebase Authentication for Edge and Node.js runtimes. Compatible with latest Next.js features.项目地址: https://gitcode.com/gh_mirrors/ne/next-firebase-auth-edge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Symfony 2 项目集成 less.php:服务端编译 LESS 的完整流程

Symfony 2 项目集成 less.php:服务端编译 LESS 的完整流程

2026/8/21 12:50:19

Symfony 2 项目集成 less.php:服务端编译 LESS 的完整流程 【免费下载链接】less.php less.js ported to PHP. 项目地址: https://gitcode.com/gh_mirrors/le/less.php less.php 是 less.js 的 PHP 移植版,它让你无需 Node.js 环境,就…

从新生到再生:新生犬原代真皮成纤维细胞为何比成年犬细胞更具组织修复潜力

从新生到再生:新生犬原代真皮成纤维细胞为何比成年犬细胞更具组织修复潜力

2026/8/21 12:40:19

在皮肤生物学与再生医学研究领域,犬作为大型实验动物模型具有独特而不可替代的价值。犬的皮肤解剖结构与生理功能与人类高度相似,其皮肤厚度、毛囊密度、伤口愈合模式及皮肤疾病谱与人类具有较强的可比性。犬可自发产生多种与人类对应的皮肤病——特应性…

实战指南:构建Suno AI音频生成插件,从API调用到生产级集成

实战指南:构建Suno AI音频生成插件,从API调用到生产级集成

2026/8/21 12:40:19

在实际 AI 音频生成领域,Suno 是一个绕不开的名字。它以其强大的音乐生成能力,让用户仅通过文本描述就能创作出包含旋律、人声和伴奏的完整歌曲。而 Suno Studio 2.0 的推出,特别是其“自然语言生成音频插件”的概念,标志着这项技…

ckb-next 硬件模式详解:无需驱动也能保存 RGB 灯光配置

ckb-next 硬件模式详解:无需驱动也能保存 RGB 灯光配置

2026/8/21 14:50:24

ckb-next 硬件模式详解:无需驱动也能保存 RGB 灯光配置 【免费下载链接】ckb-next RGB Driver for Linux and OS X 项目地址: https://gitcode.com/gh_mirrors/ckb/ckb-next 喜欢玩 RGB 灯效的朋友一定遇到过这样的烦恼:辛辛苦苦调好的ckb-next 硬…

学会解读 cookie_crimes 输出:Chrome Cookie JSON 字段完全解析

学会解读 cookie_crimes 输出:Chrome Cookie JSON 字段完全解析

2026/8/21 14:50:24

学会解读 cookie_crimes 输出:Chrome Cookie JSON 字段完全解析 【免费下载链接】cookie_crimes Read local Chrome cookies without root or decrypting 项目地址: https://gitcode.com/gh_mirrors/co/cookie_crimes cookie_crimes 是一款无需 root 权限、也…

不需要去官网下载cudnn和cuda,最新anaconda环境配置

不需要去官网下载cudnn和cuda,最新anaconda环境配置

2026/8/21 14:50:24

软件安装,环境配置: 最新版最详细Anaconda新手安装配置环境创建教程-CSDN博客 创建虚拟环境: conda create -n 填环境名 python填版本 -y 移除虚拟环境: conda remove -n 填环境名 --all -y 创建虚拟环境后需要激活:…

AMA Protocol的共识可审计性:chain_audit工具与链上数据自检

AMA Protocol的共识可审计性:chain_audit工具与链上数据自检

2026/8/21 14:50:24

AMA Protocol的共识可审计性:chain_audit工具与链上数据自检 【免费下载链接】node 项目地址: https://gitcode.com/GitHub_Trending/node95/node 区块链世界的信任,一半靠共识机制,另一半靠可审计性。AMA Protocol(AMADE…

如何实现 Markdown 与思维导图无缝切换:obsidian-enhancing-mindmap 双视图同步实战

如何实现 Markdown 与思维导图无缝切换:obsidian-enhancing-mindmap 双视图同步实战

2026/8/21 14:50:24

如何实现 Markdown 与思维导图无缝切换:obsidian-enhancing-mindmap 双视图同步实战 【免费下载链接】obsidian-enhancing-mindmap obsidian plugin editable mindmap,you can edit mindmap on markdown file 项目地址: https://gitcode.com/gh_mirrors/ob/obsidi…

单片机计算机毕设之基于 STM32 的 MAX30102 生理信号检测系统开发 基于 STM32 的多体征实时采集与声光预警装置设计(013204)

单片机计算机毕设之基于 STM32 的 MAX30102 生理信号检测系统开发 基于 STM32 的多体征实时采集与声光预警装置设计(013204)

2026/8/21 14:40:24

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

2026/8/19 3:36:59

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/20 21:07:35

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/19 8:02:16

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

091、主从同步控制策略

091、主从同步控制策略

2026/8/21 0:09:47

091、主从同步控制策略:从一次多轴抖动事故说起 去年调试一台四轴龙门平台,Z轴和两个X轴做主从同步。电机选的是台达A2系列,驱动器工作在位置模式,主站发脉冲指令,从站硬线跟随。调试时发现一个诡异现象:当主站以500rpm匀速运行时,从站电流波形每隔几秒会出现一次毛刺,…

向量检索实验失败后该查什么

向量检索实验失败后该查什么

2026/8/21 0:09:47

向量检索实验失败后该查什么 这篇要解决什么 向量检索实验失败后该查什么讨论的是一个可复查的工程问题。向量检索实验失败后该查什么不拿未经记录的事故、跑分或成本当作论据;判断需要回到当前项目的输入、版本和运行条件。 从边界开始 处理向量检索实验失败后该查…

提示词发布过程中的止损边界

提示词发布过程中的止损边界

2026/8/21 0:09:47

提示词发布过程中的止损边界 这篇要解决什么 提示词发布过程中的止损边界讨论的是一个可复查的工程问题。提示词发布过程中的止损边界不拿未经记录的事故、跑分或成本当作论据;判断需要回到当前项目的输入、版本和运行条件。 从边界开始 处理提示词发布过程中的止损…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/17 12:00:53

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/15 10:10:27

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/18 12:20:24

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…