Packages 包@downcity/cityCity

登录与 token 链路

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

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

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

方式一:你的后端做登录

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

适合:

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

方式二:accounts 服务做登录

前端创建 guest User City
  -> 调 accounts.register / login
  -> service 返回 user_token
  -> 前端创建正常 User City

适合:

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

guest User City 是什么

它只是一个只有 city_urlUser City

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

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

  • accounts.register
  • accounts.login
  • accounts.oauth/start
  • accounts.oauth/result

切到正常 User City

const user = new City({
  role: "user",
  city_url: "https://base.example.com",
  town_id: "town_xxx",
  user_token: session.user_token,
});

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

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