场景指南

鉴权与 user_token

如何把登录系统和 Downcity token 连接起来。

Downcity 不替你托管用户系统。它只要求 client 请求携带可校验的 user_token

已有登录系统

如果你已经有登录系统,可以在登录后用 Admin City 签发 Downcity token:

const user = await admin.towns.tokens.apply({
  town_id: "town_xxx",
  user_id: session.user.id,
  metadata: {
    plan: session.user.plan,
  },
  ttl: "7d",
});

然后把两样东西交给产品侧:

  • town_id
  • user_token

没有复杂后端

如果新产品是纯客户端项目,可以把 token 签发收敛到统一 City 周边,而不是每个产品写一套服务。

token 不应该做什么

  • 不要把 provider key 写进 token。
  • 不要把不可公开的计费规则写进 token。
  • 不要让 client 持有 DOWNCITY_CITY_ADMIN_SECRET_KEY

token 只表达“这个用户是谁”和“这次请求有哪些业务 metadata”。