账号登录、设备、PC 授权与安全

本文整理 DGJ2.0 PC、App、PDA 登录,短信验证码,密码重置,机器码绑定,PC 授权,账号安全配置和安全日志。账号链路是所有业务入口的前置条件。

业务目标

  • 支持 PC/App 登录、退出、session 检查。
  • 支持短信验证码、密码重置、登录背景图。
  • 支持 PC 机器码绑定、解绑申请、授权登录。
  • 支持账号安全配置:PC/App/PDA/KXJ 是否允许登录、是否要求重新登录。
  • 记录账号安全操作日志。

入口文件

  • PC 登录:application/controllers/passport/Login.php
  • App 登录:application/controllers/app/passport/Login.php
  • 登录服务:application/Services/Passport/LoginService.php
  • 安全服务:application/Services/Safe/AccountSafeSer.php
  • 安全日志:application/Services/Safe/AccountSafeLogSer.php
  • 初始化任务:application/controllers/tasks/AccountSafeLog.php

核心表

| 表 | 用途 | | --- | --- | | t_sys_admin | 用户账号 | | t_app_device | App 登录设备记录 | | t_sys_pc_auths | PC 授权信息 | | t_sys_pc_versions | PC 版本 | | t_sys_pc_machines | 机器码绑定 | | t_sys_pc_login_control | PC 登录控制 | | t_sys_pc_upgrade_log | PC 升级日志 | | t_sys_pc_unbind_apply | 解绑申请 | | t_sys_pc_bind_apply | 绑定申请 | | t_bs_account_safe_log | 账号安全日志 |

核心方法

登录控制器:

  • checkSession:检查 session。
  • signIn:登录。
  • silentSignIn:静默登录。
  • pcSmsSend:PC 短信。
  • pcActiveBind:PC 激活绑定。
  • pcGrantAuth:PC 授权。
  • pcSignIn:PC 登录。
  • pcBindApply:绑定申请。
  • pcUnbind:解绑。
  • sendSmsCode:发送验证码。
  • resetUserPassword:重置密码。

登录服务:

  • LoginService::verifyUser:校验用户。
  • sendSmsCode / verifySmsCode:验证码发送和校验。
  • resetUserPassword:密码重置。
  • sendVerifier:发送验证。

安全服务:

  • AccountSafeSer::pcLoginStatus / appLoginStatus / pdaLoginStatus / kxjLoginStatus:各端登录状态。
  • setAccountConfig:设置安全配置。
  • needReLogin / setNeedReLogin / clearReLogin:强制重新登录。
  • lockPdaAndApp / unLockPdaAndApp:锁定或解锁移动端。
  • kzmallWebLoginOut:Web 退出。

主流程

flowchart TD
  A["用户登录"] --> B["校验账号密码或验证码"]
  B --> C["检查服务站安全配置"]
  C --> D{"PC 是否需要机器授权"}
  D -->|是| E["机器码绑定/授权"]
  D -->|否| F["建立 session"]
  E --> F
  F --> G["记录设备和安全日志"]

异常流程

  • 登录失败:查账号状态、密码、验证码、服务站安全配置。
  • PC 机器码失败:查 t_sys_pc_machines、绑定申请、解绑申请。
  • App/PDA 被锁:查 AccountSafeSer 缓存和账号安全配置。
  • 重置密码失败:查手机号、验证码、用户绑定关系。
  • 修改安全配置后不生效:查 Redis/缓存是否刷新。

常用 rg 命令

rg -n "pcSignIn|pcBindApply|pcUnbind|pcGrantAuth|sendSmsCode" application/controllers/passport application/controllers/app/passport
rg -n "AccountSafeSer|needReLogin|lockPdaAndApp|pcLoginStatus|pdaLoginStatus" application/Services/Safe
rg -n "SYS_PC_AUTHS|APP_DEVICE|BS_ACCOUNT_SAFE_LOG|SYS_PC_MACHINES" application/config/tables.php application

改动风险和回归清单

  • PC 登录、App 登录、PDA 登录。
  • 短信验证码、密码重置。
  • PC 绑定、解绑、授权、机器码更换。
  • 账号安全配置:锁定、解锁、强制重登。
  • 安全日志:OPS 修改、财务修改、初始化任务。