Packages 包@downcity/cityCity

登录与 token 链路

guest User City、accounts 服务、自有后端、user_token 和正常 User City 的衔接方式。

City 的登录问题,最终都落到一个目标:

让产品前端拿到 city_id + user_token,然后进入正常 User City 调用。

方式一:你的后端做登录

前端提交登录信息
  -> 你的后端完成账号校验
  -> 后端用 Admin City 申请 user_token
  -> 返回 city_id + user_token
  -> 前端创建正常 User City

适合:

  • 你已有账号系统
  • 你需要复杂组织、权限、风控逻辑

方式二:accounts 服务做登录

前端创建 guest User City
  -> 调 accounts.providers
  -> 按 provider type 调 accounts.login/start / continue / result 或注册流程
  -> login/result 返回 user_token
  -> 前端创建正常 User City

适合:

  • 想最快跑通最小注册登录
  • 不想先自己维护用户表和 session 表

guest User City 是什么

它只是一个只有 federation_urlUser City

const guest = new City({
  role: "user",
  federation_url: "https://base.example.com",
});

这个阶段通常只拿来调免登录 Action,例如:

  • accounts.register
  • accounts.providers
  • accounts.login/start
  • accounts.login/continue
  • accounts.login/result

切到正常 User City

const user = new City({
  role: "user",
  federation_url: "https://base.example.com",
  city_id: "city_xxx",
  user_token: session.user_token,
});

到了这一步,产品就进入了真正的用户态:

  • 可以调 AI service
  • 可以调需要用户身份的 custom service
  • 可以调 accounts.meusage.me 这类 service