zoujingli/think-plugs-account 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

zoujingli/think-plugs-account

Composer 安装命令:

composer require zoujingli/think-plugs-account

包简介

Multi-terminal account and JWT authentication plugin for ThinkAdmin

README 文档

README

Latest Stable Version Latest Unstable Version Total Downloads Monthly Downloads Daily Downloads PHP Version License

ThinkPlugsAccountThinkAdmin 的多端账号插件,用于管理终端账号、手机号绑定、正式会员账号和接口令牌。本插件属于会员尊享插件,未经授权不得用于商业用途。

当前插件提供微信服务号、微信小程序、手机短信验证等账号接入方式,并可通过动态通道扩展其他终端账号类型。

账号数据以终端账号 usid、绑定手机号 bind、正式用户 unid 三层关系组织,适用于公众号、小程序、APP、H5、PC 和自定义终端等多端登录场景。

请注意,通过 微信服务号微信小程序 等授权方式登录的用户,初始状态为临时用户。为了保障账号的正式性和安全性,我们要求用户通过手机号短信验证并绑定手机号,完成这一过程后,用户将升级为正式用户,享受更多会员权益和服务。

我们致力于为用户提供更加便捷、安全的账号管理体验,不断优化和完善多端账号中心的功能与服务。

数据关联模型:

临时用户(usid) <-> 绑定手机(bind) <-> 正式用户(unid)

话术解析

  • 账号调度器 - Account:这是一个用于创建账号管理实例对象的工具,同时也负责处理部分基础数据。它使得账号管理变得更加便捷和高效。
  • 账号接口类型 - Account::TYPE:这是终端账号请求的特定通道标识。在请求过程中,通常通过传递字段 type 作为参数来指定该接口类型,确保请求能够准确地被识别和处理。
  • 账号实例接口 - AccountInterface:这个接口涵盖了用户账号编号和终端账号编号的数据,以及与之相关的操作,如接口授权等。它提供了丰富的功能,使得开发者能够灵活地管理和操作账号数据。
  • 用户账号编号 - unid:正式用户账号编号,对应 plugin_account_user 表的 id 字段。通过绑定和解绑操作,可将多个终端账号关联到同一正式用户。
  • 终端账号编号 - usid:用户在某个终端通道下的登录身份编号,对应 plugin_account_bind 表的 id 字段。一个终端账号只能绑定一个正式用户账号。

注意事项:

  • 用户账号编号 unid 的获取流程如下:终端账号登录后,通过调用 $account->bind() 方法来创建或绑定用户账号。成功绑定后,系统将返回用户账号编号 unid 的值,作为该用户账号的唯一标识。

  • 若需取消终端账号与用户账号的关联,可调用 $account->unbind() 方法。一旦关联被取消,该终端账号便可重新绑定其他用户账号,实现灵活的用户账号管理。

加入我们

我们的代码仓库已移至 Github,而 Gitee 则仅作为国内镜像仓库,方便广大开发者获取和使用。若想提交 PRISSUE 请在 ThinkAdminDeveloper 仓库进行操作,如果在其他仓库操作或提交问题将无法处理!.

开放接口

通过用户登录接口,换取 JWT-TOKEN 内容,之后接口需要在每次请求的头部 header 加上 Api-Token 字段并带上之后获取到的值。

接口文档: https://thinkadmin.apifox.cn

特别注意: 调用接口时后台接口未启动 Session 中间键,建议使用 Cache & usidCache & unid 作为key值来缓存数据。

接口状态

  • code:0 操作失败,稍候重试
  • code:1 操作成功,正常操作
  • code:401 无效令牌,需要重新登录
  • code:402 资料不全,需要补全资料
  • code:403 认证超时,需要重新登录

安装插件

### 安装前建议尝试更新所有组件
composer update --optimize-autoloader

### 安装稳定版本 ( 插件仅支持在 ThinkAdmin v6.1 中使用 )
composer require zoujingli/think-plugs-account --optimize-autoloader

### 安装测试版本( 插件仅支持在 ThinkAdmin v6.1 中使用 )
composer require zoujingli/think-plugs-account dev-master --optimize-autoloader

卸载插件

### 注意,插件卸载不会删除数据表,需要手动删除
composer remove zoujingli/think-plugs-account

调用案例

// 账号管理调度器
use plugin\account\service\Account;

// @ 注册一个新用户( 微信小程序标识字段为 openid 字段 )
//   不传 TOKEN 的情况下并存在 openid 时会主动通过 openid 查询用户信息
//   如果传 TOKEN 的情况下且 opneid 与原 openid 不匹配会报错,用 try 捕获异常
//   注意,每次调用 Account::mk() 都会创建新的调度器,设置 set 和 get 方法的 rejwt 参数可返回接口令牌 
$account = Account::mk(Account::WXAPP, TOKEN='');
$user = $account->set(['openid'=>'OPENID', 'phone'=>'13888888888']);
var_dump($user);

// 列如更新用户手机号,通过上面的操作已绑定账号,可以直接设置
$account->set(['phone'=>'1399999999']);

// 设置额外的扩展数据,数据库没有字段,不需要做为查询条件的字段
$account->set(['extra'=>['desc'=>'用户描述', 'sex'=>'']]);

// 获取用户资料,无账号返回空数组
$user = $account->get();
var_dump($user);

// 以上插件仅仅是注册终端账号,也就是临时账号
// 下面我们通过 bind 操作,绑定或创建用户账号( 主账号 )
$user = $account->bind(['phone'=>'1399999999'],['uesrname'=>"会员用户"]);
var_dump($user); // $user['user'] 是主账号信息

// 解除该终端账号关联主账号
$user = $account->unBind();
var_dump($user); // 此处不会再有 $user['user'] 信息

// 判断终端账号是否为空,也就是还没有调用 set 访问或 init 失败
$user = $account->isNull();

// 获取接口 Token 信息
$user = $account->get(true);
var_dump($user); // $user['token'] 即为 JwtToken 值,接口 header 传 api-token 字段

// 判断终端账号是否已经关联主账号
$is = $account->isBind();
var_dump($is);

// 获取主账号关联的所有终端账号
$binds = $account->allBind();

// 通过终端USID取消其关联主账号
$binds = $account->delBind($usid);

// 动态注册接口通道,由插件服务类或模块 sys.php 执行注册
Account::add('diy', '自定义通道名称', '终端账号编号验证字段');

// 通道状态 - 禁用接口,将禁止该方式访问数据
Account::set('diy', 0);

// 通道状态 - 启用接口,将启用该方式访问数据
Account::set('diy', 1);

// 保存通道状态,下次访问也同样生效
Account::save();

// 获取接口认证字段以及检查接口是否有效
$field = Account::field('diy');
if($field)// 接口有效
else //接口无效

// 获取全部接口
$types = Account::types();
var_dump($types);

功能节点

可根据下面的功能节点配置菜单及访问权限,按钮操作级别的节点未展示!

  • 用户账号管理:plugin-account/master/index
  • 终端账号管理:plugin-account/device/index
  • 手机短信管理:plugin-account/message/index

业务功能特性

核心账号功能:

  • 多端统一账号: 支持微信服务号、微信小程序、APP、网页等多终端统一账号体系
  • 三层账号模型: 临时用户(usid) ↔ 绑定手机(bind) ↔ 正式用户(unid) 的完整账号生命周期
  • JWT无状态认证: 基于 JWT Token 的无状态认证机制,支持跨域和分布式部署
  • 动态通道注册: 支持运行时动态注册新的登录通道类型,灵活扩展登录方式
  • 手机号绑定验证: 通过短信验证码实现手机号绑定,确保账号安全性和唯一性
  • 账号解绑管理: 支持终端账号与主账号的灵活绑定和解绑操作
  • 高并发安全: 支持高并发场景下的账号创建和绑定操作
  • 数据一致性保障: 通过数据库事务确保账号数据的一致性

技术特性:

  • 缓存优化: 集成缓存机制,提升账号信息查询性能
  • 异常处理完善: 完善的异常捕获和错误处理机制
  • 扩展性设计: 抽象的账号接口设计,便于扩展新的认证方式
  • 向后兼容: 保持 API 稳定性,确保平滑升级

插件数据

本插件涉及数据表有:

  • 插件-账号-授权: plugin_account_auth
  • 插件-账号-终端: plugin_account_bind
  • 插件-账号-短信: plugin_account_msms
  • 插件-账号-资料: plugin_account_user

版权说明

ThinkPlugsAccountThinkAdmin 会员插件。

未获得此插件授权时仅供参考学习不可商用,了解商用授权请阅读 《会员授权》

版权所有 Copyright © 2014-2026 by ThinkAdmin (https://thinkadmin.top) All rights reserved。

zoujingli/think-plugs-account 适用场景与选型建议

zoujingli/think-plugs-account 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.58k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2023 年 03 月 13 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 zoujingli/think-plugs-account 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 zoujingli/think-plugs-account 我们能提供哪些服务?
定制开发 / 二次开发

基于 zoujingli/think-plugs-account 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 2.58k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 8
  • 依赖项目数: 3
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2023-03-13