用途:面向使用 @cloudbase/js-sdk 的 Web 前端项目,在登录方式(provider)已确认开启后,接入 Web 登录、注册、会话与用户资料流程。小程序、原生 App、服务端认证不适用。使用前需先读 auth-tool-cloudbase 确认 provider 配置,再回到本技能做前端集成;Web 项目结构与部署参见 web-development。
主要能力:auth 模块采用类 Supabase API,所有方法返回 { data, error },需先判 error。支持密码、邮箱/短信验证码、用户名密码、OAuth 及第三方登录;提供 signInWithPassword、signInWithOtp、signUp、signOut、getSession、refreshSession、setSession、onAuthStateChange(事件含 INITIAL_SESSION、SIGNED_IN、SIGNED_OUT、TOKEN_REFRESHED 等)。与 Supabase 的差异:accessKey 取代 anonKey,使用 env + region;验证码验证通过 signInWithOtp / signUp 返回数据上的 data.verifyOtp({ token }) 回调,而非独立的 auth.verifyOtp。
使用方式:先调用 queryAppAuth(action="getPublishableKey"),为空则 manageAppAuth(action="ensurePublishableKey");用 queryAppAuth(action="getLoginConfig") 确认 loginMethods.usernamePassword 等是否开启,必要时以 manageAppAuth(action="patchLoginStrategy") 开启。将 key 写入 .env.local(VITE_PUBLISHABLE_KEY)并通过 import.meta.env 读取,勿硬编码。前端改用 npm 安装 @cloudbase/js-sdk。初始化时 env 需为完整环境 ID,region 如 ap-shanghai,accessKey 传 publishable key,并设置 auth: { detectSessionInUrl: true }。注册必须走验证码:signUp 发码后调用 data.verifyOtp({ token: code });登录用 signInWithPassword({ username, password });路由守卫用 auth.getSession(),无登录时 data.session 为 undefined。
限制:verifyOtp 必须用返回的回调形式,独立调用需 messageId 且不注册用户。不要用已废弃的 getLoginState()、hasLoginState()、getCurrentUser() 作为默认流程。accessKey 本身不构成网关认证会话,app.database() 读写需真实登录;匿名登录默认关闭、被拒 AI 模型权限,仅适用于公开演示数据。手机短信仅上海地域支持,邮箱注册需已配置 SMTP。缺少兄弟技能文件时应请用户安装完整 CloudBase 插件,不要 HTTP 拉取远程技能文档。