流程状态:整合票 20 依据已核验正本合并的流程结构,未联调;各步骤的完成判据、错误出口与状态以其链接的正本页为准。

登录与切换空间

串起 App 从凭据到可用会话的前置链路:HTTP 登录 → 空间(租户)选择/切换 → MQTT 会话建立。任何实时操作(监看、对讲、回放、远控)都以这条链路为前提。

前置条件

  • 可用的中心服务地址;HTTP 约定与信封见 HTTP 约定,认证与空间规则见认证与空间
  • 登录凭据:用户名/密码(Web 端按平台约定先作摘要变换,服务端同时接受明文与变换两种形态;该值的生成算法属于内部实现,不在文档披露范围,具体生成方式请与开发人员沟通确认);邮箱/手机验证码族见各 access-and-account 正本 同目录。

主路径

  1. 登录:调用用户名登录取得 data.authorization(不透明 Bearer token)与 data.tenantId;响应业务成功且保存新 token 才算登录完成,HTTP 2xx 本身不构成完成。
  2. 空间列表:以用户名查按用户名缓存空间列表,或对已知 id 用按 id 查空间确认目标空间。
  3. 切换空间(可选):调用切换租户;成功后服务端重新签发 token,调用方必须替换旧 token(旧 token 被替换而非吊销)。
  4. 恢复登录态(可选):页面刷新/重启用恢复登录态重算 authorities/loginUser 视图;该调用不续期 token。
  5. 建立 MQTT 会话:按 MQTT 连接与用户会话订阅user,{username},web,{sessionId} 建连并订阅会话通配主题;connect 后订阅无 err、全局 client 可用即会话就绪。该页当前标「存在关键缺口」(账号供给与 Broker ACL 缺证),App 需自行评估部署侧风险。

失败与恢复

  • 认证/权限失败的两种出口族(Security filter 200/1000、1001 与 Advice 401/403)见错误响应差异;不能只看 HTTP 状态。
  • 登录限频:同名 3 秒内重复、24 小时高频会失败(用户名登录)。
  • 切换到非成员租户被业务拒绝(Wrong tenant id);tenantId 缺失按参数校验拒绝。
  • MQTT 连接失败由 mqtt.js 按 reconnectPeriod 自动重试;订阅失败 fail-closed,不发布全局 client(会话正本)。
  • 切换空间后既有 MQTT 会话是否可用未由接口闭合(切换租户已知缺口);稳妥路径是切换后以新凭据重建会话。

收尾

  • 退出登录调用退出登录;登出不清 MQTT 订阅,连接随页面布局卸载 end() 释放。
  • 超时/失败不能默认服务端会话已失效;token 以本地替换/清除为准。