跳转到正文

English core guides · 历史记录保留中文

带前缀的数据库标识 ​

格式 ​

实体标识使用三位小写前缀、下划线和 16 位 CUID2,共 20 字符,例如 usr_ght4k2jxm7pqbv01。前缀帮助日志排查,客户端应将完整值作为不透明字符串,不用前缀判断权限。

认证模型前缀
userusr
sessionses
account,映射到 identity 表idn
verificationvfy
organizationorg
membermem
invitationinv
passkeypky
apikeykey
subscriptionsub

工具记录和积分流水分别使用 run 和 crd。映射和生成器位于 db/schema/id.ts。

私有文件使用 fil,任务使用 tsk,任务执行记录使用 tat;输入引用以任务 ID 为主键。用户密钥签发请求使用 kis,用户密钥使用 key;明文凭据的 abk_ 前缀与数据库 ID 分开。前缀仍不能作为授权证据。

调用 ​

ts
import { generateAuthId, generateId } from "@repo/db";

const userId = generateAuthId("user");
const uploadId = generateId("upl");

认证模型必须出现在前缀映射;普通前缀必须是恰好三个小写字母,否则抛错。生成器惰性初始化,避免模块加载时不必要副作用。

Better Auth 的自定义生成器与 Drizzle 的 .$defaultFn() 使用同一约定。直接 SQL 不会执行应用层默认函数,插入时要显式提供标识。

新增模型 ​

认证模型先增加映射及类型,再同步插件和数据库模型。普通业务模型选择未混淆的三位前缀并配置应用默认生成器。结构改变后生成并审查迁移;仅改变生成函数不会自动重写已有数据。

供语言模型读取:llms.txt · llms-full.txt
采用 MIT 许可证。