SuperAPI AI 工具集

implement-saaskit-nextjs

编程与开发

查看项目

更新于 10-16 05:33

技能介绍

用途

该技能用于在 Next.js App Router 中实现 SaaSKit 登录,使智能体能够为项目添加登录、回调、会话 Cookie、登出和刷新功能。当用户希望使用 SaaSKit Next.js 时适用。

主要能力

  • 初始化 Scalekit SDK 并管理会话 Cookie。
  • 实现登录路由,重定向到 Scalekit 授权 URL。
  • 实现回调路由,交换授权码并写入会话。
  • 实现登出路由,清除会话并跳转到登出 URL。
  • 实现刷新路由,使用 refreshToken 获取新的 accessToken。
  • 通过 middleware 和 Server Components 保护页面。

使用方式

技能按步骤执行:

  1. 选择路径:确认是 App Router;若是 Pages Router 或非 Next.js,则改用 implement-saaskit;若是 Django、FastAPI 或 Flask,则改用 implement-saaskit-python。若缺少环境变量,从 app.scalekit.com 的 Developers → Settings → API Credentials 获取四个值,并在 Authentication → Redirect URLs → Allowed callback URLs 注册 SCALEKIT_REDIRECT_URI。
  2. 初始化 SDK 和会话 Cookie:仅在仓库尚无 Scalekit SDK 时安装 @scalekit-sdk/node,不添加 jose 或 cookie-parser。创建 lib/scalekit.ts 和 lib/session.ts,使用一个 scalekit_session JSON Cookie。
  3. 登录:创建 app/auth/login/route.ts,GET 请求,链接到 /auth/login,不 router.push 到 Scalekit。
  4. 回调:将路由放在 SCALEKIT_REDIRECT_URI 指定的路径,默认 /auth/callback → app/auth/callback/route.ts。
  5. 登出:创建 app/auth/logout/route.ts,GET 请求,链接到 /auth/logout,并注册 origin 为 Post logout URL。
  6. 刷新:创建 app/auth/refresh/route.ts,POST 请求。
  7. 保护页面:在项目根目录放置 middleware.ts,仅检查 Cookie 是否存在,不导入 ScalekitClient。然后在 Server Component 中重新检查会话。
  8. 停止:不编写 Express cookie-parser 中间件或 Python 认证,不启动 next dev 或运行实时冒烟测试,请用户自行编写 .env,然后停止。

适用场景

  • 在 Next.js App Router 项目中接入 SaaSKit 登录。
  • 需要实现登录、回调、会话 Cookie、登出和刷新。
  • 需要保护 /dashboard 等页面。

限制与约束

  • 必须在 Server Components 中重新检查会话,仅靠中间件检查 Cookie 存在是不够的。
  • redirectUri 必须与仪表板中 Allowed callback URL 完全一致。
  • 每个认证 Cookie 必须设置 sameSite: 'lax',不能使用 'strict',否则 OAuth 回调时会丢失 Cookie。
  • next 只能作为相对路径(/...,不能是 //…),不能重定向到任意 URL。
  • 必须在本仓库中写入 App Router 文件后停止,不能运行 create-next-app 或 next dev。
  • 读取 SCALEKIT_ENVIRONMENT_URL、SCALEKIT_CLIENT_ID、SCALEKIT_CLIENT_SECRET 和 SCALEKIT_REDIRECT_URI,不要使用 SCALEKIT_ENV_URL,不要添加 https:// 前缀。
  • 使用一个 scalekit_session JSON HttpOnly Cookie,不要复制 implement-saaskit 中 Express 路径作用域的 Cookie。
  • ScalekitClient 仅适用于 Node,不要在 middleware.ts(Edge)中导入。
  • FSA 作用域包含 offline_access。refreshAccessToken 仅返回 { accessToken, refreshToken }。
  • getLogoutUrl({ idTokenHint, postLogoutRedirectUri }),需注册该登出后 URL。

相关技能

  • 若缺少环境变量或重定向 URI,使用 setup-saaskit。
  • 若为 Node、Express 或 Pages Router,使用 implement-saaskit。
  • 若为 Django、FastAPI 或 Flask,使用 implement-saaskit-python。

参考链接

  • 文档索引:https://docs.scalekit.com/llms.txt
  • 认证流程:https://docs.scalekit.com/authenticate/fsa/quickstart/
  • MCP:https://mcp.scalekit.com