登录与 API
在 01MVP Desktop 中使用 Better Auth、oRPC 和 TanStack Query 连接 Hono 后端
桌面端不单独起后端。它连接现有 @01mvp/web 服务:
Web/API: http://localhost:7001
API base: http://localhost:7001/api
Auth: http://localhost:7001/api/auth
oRPC: http://localhost:7001/api/rpc服务端入口
服务端相关代码在:
products/01mvp/apps/web/src/server/hono.ts
products/01mvp/packages/auth/src/index.ts
products/01mvp/packages/api/src/router.ts桌面端只通过 HTTP 调用这些入口,不 import Web app 内部文件。
Auth client
桌面端 Better Auth client 在:
products/01mvp/apps/desktop/src/lib/auth-client.ts它使用:
VITE_DESKTOP_SERVER_URL${VITE_DESKTOP_SERVER_URL}/auth- 浏览器/WebView 的 cookie 机制
桌面模板默认使用邮箱登录和注册。登录成功后,Better Auth 会把 session cookie 写到当前 WebView 可用的 cookie 存储里。
oRPC client
桌面端 oRPC client 在:
products/01mvp/apps/desktop/src/lib/api-client.ts它指向:
${VITE_DESKTOP_SERVER_URL}/rpc请求要带 cookie:
fetch: (request) => fetch(request, { credentials: "include" })这样登录后的受保护 API 才能读取 Better Auth session。
当前模板里的 API 调用
模板首页保留了三类请求:
| API | 是否需要登录 | 用途 |
|---|---|---|
health.live | 否 | 确认 Hono/oRPC 服务可达 |
billing.plans | 否 | 确认公共业务 API 可以调用 |
account.profile | 是 | 确认登录 cookie 能被受保护 API 读取 |
如果这三项都能跑通,说明桌面端和后端的基础连接已经成立。
后端为什么要配置 desktop origin
浏览器预览运行在 http://localhost:7410。Tauri WebView 也会带自己的 origin。服务端需要同时允许 CORS 和 Better Auth trusted origins。
配置在:
DESKTOP_ALLOWED_ORIGINS="http://localhost:7410,http://127.0.0.1:7410,tauri://localhost,http://tauri.localhost"解析逻辑在:
products/01mvp/packages/config/src/origins.ts服务端使用位置:
products/01mvp/apps/web/src/server/hono.ts
products/01mvp/packages/auth/src/index.ts改成生产 API
生产环境可以这样配置桌面端:
VITE_DESKTOP_SERVER_URL="https://start.01mvp.com/api"
VITE_DESKTOP_WEB_URL="https://start.01mvp.com"同时服务端环境变量也要允许生产桌面 origin。不要只改桌面端 .env.local,后端也要同步。
常见问题
health 成功,profile 失败
通常是登录 cookie 没带上,或服务端没有识别当前 origin。检查:
- Auth client base URL 是否是
${VITE_DESKTOP_SERVER_URL}/auth - oRPC fetch 是否使用
credentials: "include" DESKTOP_ALLOWED_ORIGINS是否包含当前桌面 origin- 服务端是否重启并读取了新 env
浏览器预览能登录,Tauri 窗口不能登录
先确认 Tauri 窗口实际请求的 origin。可以在 Hono CORS 日志或浏览器开发者工具里看 request headers。把该 origin 加到 DESKTOP_ALLOWED_ORIGINS。
OAuth 回调怎么处理
桌面模板当前保留邮箱登录作为基础路径。要加 OAuth,建议先让 OAuth 回调回到 Web/API,再由 Web 页面或 deep link 把结果交给桌面端。不要把 OAuth client secret 放进桌面前端。
推荐测试
vpr @01mvp/desktop#test
vpr @01mvp/product#test桌面端测试覆盖 client URL、偏好 fallback 和模板契约。产品级测试会覆盖 Hono 边界、auth 和 config。
这篇文档有问题?