技能 nextjs-supabase-auth
📦

nextjs-supabase-auth

安全

在 Next.js App Router 中实现 Supabase 身份验证

在 Next.js 中构建身份验证需要理解服务器和客户端边界。本技能提供经过验证的模式,用于将 Supabase Auth 安全地集成到 App Router 架构中。

支持: Claude Codex Code(CC)
🥉 74 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“nextjs-supabase-auth”。 为 Next.js App Router 设置 Supabase 身份验证中间件

预期结果:

  • 在项目根目录创建 middleware.ts
  • 从 @supabase/ssr 导入 createServerClient
  • 使用环境变量中的 SUPABASE_URL 和 SUPABASE_ANON_KEY 配置客户端
  • 为需要身份验证保护的路由添加匹配器
  • 在会话过期时处理令牌刷新
  • 在受保护路由上身份验证检查失败时重定向到登录页面

正在使用“nextjs-supabase-auth”。 如何在 Server Components 中处理身份验证?

预期结果:

  • 使用 createServerClient 实例化 Supabase 客户端
  • 调用 getUser() 验证当前会话
  • 将用户数据作为 props 传递给子组件
  • 避免在 Server Components 中直接调用 getSession()
  • 让中间件处理受保护路由的会话验证

安全审计

安全
v2 • 2/24/2026

Static analysis flagged markdown backticks as shell commands (false positive). Line 57 uses backticks for inline code formatting in documentation, not command execution. No actual external commands, cryptographic operations, or dangerous patterns exist. Skill provides documentation and patterns only - no executable code with security risks.

1
已扫描文件
61
分析行数
0
发现项
2
审计总数
未发现安全问题
审计者: claude 查看审计历史 →

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
91
规范符合性

你能构建什么

全栈开发人员构建 SaaS 应用程序

使用 Supabase 作为后端,为 Next.js SaaS 产品实现安全的用户身份验证,包括电子邮件和 OAuth 提供程序。

从 Pages Router 迁移到 App Router 的团队

重构现有的 Supabase 身份验证实现,使其适用于 Next.js App Router 服务器组件和中间件架构。

开发人员向现有应用添加身份验证

将身份验证集成到具有 Supabase 后端的现有 Next.js 应用程序中,从一开始就遵循安全最佳实践。

试试这些提示

基础 Supabase 客户端设置
帮助我为 Next.js App Router 项目设置 Supabase 客户端配置。我需要为服务器组件、客户端组件和中间件分别使用 @supabase/ssr 创建客户端。
受保护路由实现
创建中间件以保护 /dashboard 下的路由,并将未身份验证的用户重定向到 /login。包含针对过期令牌的会话刷新逻辑。
OAuth 回调处理器
构建 OAuth 回调路由处理器,将授权代码交换为 Supabase 会话,并在成功身份验证后将用户重定向到相应的页面。
使用 Server Actions 的完整身份验证流程
使用 Server Actions 实现完整的身份验证流程,包括登录、注册和注销。包含适当的错误处理、表单验证,以及在不向客户端公开凭据的情况下进行安全的令牌管理。

最佳实践

  • 使用专门为 Next.js App Router 服务器/客户端边界设计的 @supabase/ssr 包
  • 在中间件中处理身份验证以在渲染前保护路由,并透明地管理会话刷新
  • 使用 @supabase/ssr 自动管理的 cookie 存储令牌,而不是手动处理令牌存储

避免

  • 在 Server Components 中直接调用 getSession() 而不是使用中间件进行路由保护
  • 在客户端组件中管理身份验证状态而未实现适当的身份验证状态更改监听器
  • 在 @supabase/ssr 提供自动基于 cookie 的会话管理时手动存储或处理 JWT 令牌

常见问题

@supabase/ssr 和 @supabase/supabase-js 有什么区别?
@supabase/ssr 专门为 Next.js App Router 设计,具有内置的 cookie 处理和服务器/客户端边界支持。@supabase/supabase-js 是核心客户端库,但需要为 SSR 场景手动进行 cookie 和会话管理。
如何使用 Supabase 身份验证保护 API 路由?
在项目根目录创建 middleware.ts 文件,检查指定路由模式的身份验证。使用 createServerClient 验证会话,对未身份验证的请求重定向或返回 401。
我可以将本技能与 Pages Router 一起使用而不是 App Router 吗?
本技能专注于 App Router 模式。对于 Pages Router,您需要使用不同的模式,包括 getServerSideProps 和不同的 cookie 处理方法。
如何处理 Google 或 GitHub 等 OAuth 提供程序?
在 Supabase 仪表板中配置 OAuth 提供程序,然后创建回调路由处理器,使用 Supabase 的 OAuth 流程将授权代码交换为会话。本技能详细介绍了此模式。
我应该在哪里存储 Supabase 凭据?
将 SUPABASE_URL 和 SUPABASE_ANON_KEY 存储在环境变量中。切勿将其提交到版本控制。本地开发使用 .env.local,生产环境使用托管平台的密钥管理。
如何正确处理注销?
使用 Supabase 的 signOut() 方法在服务器端使会话失效,然后清除任何本地状态并重定向到登录或首页页面。Server Actions 为此操作提供了清晰的模式。

开发者详情

文件结构

📄 SKILL.md