mcpField
B
better-auth-ui-react

better-auth-ui-react

github.com/better-auth-ui开发1.7k45 次安装3 天前更新
代码仓库

关于 better-auth-ui-react

面向 React 开发者的 Better Auth UI 使用指南,涵盖共享数据层、React Provider 与认证 Hooks 的集成。内容还说明 SSR、路由、查询缓存及插件配置中的注意事项。

主要功能

  1. 01配置认证客户端与 UI Provider
  2. 02使用会话查询和认证变更 Hooks
  3. 03设置浏览器及服务端加载器
  4. 04处理 SSR 与请求级查询客户端
  5. 05配置插件和组织路由

适用场景

  1. 01在 React 应用接入 Better Auth UI
  2. 02为认证页面配置导航和重定向
  3. 03在 SSR 中加载会话并进行数据水合
  4. 04按路由选择组织并启用插件视图

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/better-auth-ui/better-auth-ui --skill better-auth-ui-react

安装后在 Claude Code 中输入/better-auth-ui-react确认已加载。

附带文件references/shadcn.md

详细介绍

用于 React 的 Better Auth UI

以已安装软件包的导出内容为 API 版本的权威依据。本指南涵盖 1.7 软件包结构。

选择 UI

  • 对于复制的 shadcn/ui 组件,请阅读 shadcn 集成。
  • 对于打包的 HeroUI 组件,请使用 @better-auth-ui/heroui,并在可用时使用其 better-auth-ui-heroui 技能。
  • 对于自定义界面,请直接使用 @better-auth-ui/react 中的提供器和 Hooks。

@better-auth-ui/react 是共享数据层。它不会导出复制的 shadcn Auth、Settings 或 UserButton 组件。

配置应用程序

  1. 配置 Better Auth,并在应用程序的服务端路由中挂载其处理程序。
  2. 使用 better-auth/react 中的 createAuthClient 创建 React 客户端。
  3. 使用所选 UI 的 AuthProvider 包裹身份验证使用方。
  4. 传入 authClient、兼容路由器的 navigate,以及应用程序的 queryClient。
  5. 配置重定向目标、UI 路径和插件,使其与应用程序的路由相匹配。

导航回调接收 { to, replace? }。应将 Next.js router.push 和 router.replace 适配为此对象,而不是直接传入。

React 提供器会优先选择显式传入的 QueryClient,其次是现有的 Query 上下文,最后是备用项。对于 SSR,请传入请求作用域的客户端。

在 Next.js 中,为交互式提供器和 Hooks 使用客户端边界。将服务端配置、密钥和 /server 导入放在这些边界之外。

读取和更改身份验证数据

import { useSession, useSignInEmail } from "@better-auth-ui/react"

const session = useSession(authClient, { staleTime: 5_000 })
const signIn = useSignInEmail(authClient)

在 React 组件或自定义 Hook 中调用这些 Hooks。请显式提供身份验证客户端。

查询会公开 TanStack Query 状态,例如 data、isPending 和 error。变更会公开 mutate、mutateAsync 和 isPending。

当使用方共享 Better Auth UI 的 Query 缓存时,请使用 useSession。Better Auth 自带的 authClient.useSession() 使用不同的订阅路径。

从 @better-auth-ui/react/plugins/<plugin> 导入可选 Hooks。从 @better-auth-ui/core 或其插件入口点导入加载器工厂和辅助函数。

在查询完成前,保持页面标题、导航和独立内容处于挂载状态。仅对尚未解析的值和依赖操作显示待处理状态。

加载器和 SSR

浏览器加载器请使用 ensureSession(queryClient, authClient)。服务端请使用 @better-auth-ui/core/server 中的 ensureSessionServer(queryClient, auth, { headers })。

每个服务端请求都创建一个 QueryClient。将同一个客户端传给加载器、水合过程和 AuthProvider。

对于 TanStack Start,请使用文档所述的 Router/Query SSR 集成。对于 Next.js,请将直接服务端调用保留在仅服务端代码中。

不要在模块级服务端 QueryClient 中缓存某个用户的会话。除了路由守卫,还要在服务端端点中强制执行权限检查。

插件和组织

适用时,请在三个位置启用每项功能:Better Auth 服务端、其客户端插件,以及所选 UI 插件。

使用所选组件系统提供的 UI 插件。核心插件提供共享行为,但不会提供复制的 UI 视图。

将插件视图路径纳入路由验证。写死的基础身份验证路径可能会拒绝有效的邀请或双重验证路由。

从路由 slug 或显式 ID 中选择组织。传入 organizationPlugin({ slug });个人账户路由使用 null。

路由更改时,请保持此值为最新值。不要将会话中的活动组织状态或 setActive 用作访问权限的依据。

参考资料

网站示例基于当前版本。使用较新文档中的 API 前,请先检查已安装的软件包。

评论

支持 Markdown