免认证微信登录运维管控
面向网站前台的公众号扫码登录插件。**不申请微信认证、不调用网页授权**,使用「固定关注二维码 + 一次性配对码 + 公众号回复验证码」的方案,适用于个人订阅号与未认证公众号。
5.00原价
一次购买,永久使用
详情介绍
未认证微信登录(WechatUnauthLogin)
面向网站前台的公众号扫码登录插件。不申请微信认证、不调用网页授权,使用「固定关注二维码 + 一次性配对码 + 公众号回复验证码」的方案,适用于个人订阅号与未认证公众号。
方案参考:未认证微信公众号扫码登录思路。未认证公众号无法获取网页授权与参数二维码权限(常见报错 48001),因此改用公众号消息完成身份校验。
功能特性
- 支持未认证微信公众号、个人订阅号
- 使用固定关注二维码,不依赖参数二维码接口
- 登录框内直接展示「微信扫码登录」入口,弹窗完成全部操作
- 6 位配对码与当前浏览器 Session 绑定,一次性使用
- 公众号回复 6 位登录验证码,网页端校验后写入真实登录态
- 验证码默认 5 分钟过期、一次性使用,连续输错自动作废
- 同一个配对码不能被两个微信号绑定
- 首次登录可自动创建站点账号,可接入注册限制插件
- 兼容明文模式,也支持安全 / 兼容模式的
EncodingAESKey加解密 - 支持登录后跳回原页面(仅允许站内相对路径)
登录流程
- 用户点击登录框中的「微信扫码登录」;
- 插件为当前浏览器生成一次性 6 位配对码,并展示公众号关注二维码;
- 用户扫码关注公众号,把配对码直接发送给公众号(无需发送“登录”二字);
- 公众号回调校验配对码,绑定浏览器与微信 OpenID,并回复 6 位登录验证码;
- 用户在网页输入验证码,插件校验通过后写入站点登录态;
- 首次登录自动创建站点账号,再次登录复用已绑定的账号。
环境要求
- Zsens Admin 3.x(PHP 8.2+)
- 前台主题需包含登录弹窗与
{:plugin_assets()}输出(社区模板默认支持) - 服务器可被微信服务器访问(HTTPS 域名)
- PHP 需启用
openssl扩展(安全模式必需,明文模式也会加载但不会调用)
安装与启用
- 后台「应用中心」安装并启用「未认证微信登录」插件;
- 进入插件配置,填写公众号关注二维码、消息校验 Token 等信息;
- 在公众号后台配置服务器回调地址,并确保服务器配置处于「已启用」状态。
公众号后台配置
进入「微信公众平台 → 设置与开发 → 基本配置 → 服务器配置」:
| 配置项 | 填写内容 |
|---|---|
| URL | https://你的域名/wechat-unauth-login/callback |
| Token | 与插件配置中的「消息校验 Token」完全一致 |
| EncodingAESKey | 明文模式可随机生成;安全 / 兼容模式需与插件配置一致 |
| 消息加解密方式 | 建议「明文模式」;也可使用「安全模式」,需同时填写 AppID 与 EncodingAESKey |
注意事项:
- 如果站点前面有宝塔防火墙、1Panel WAF、CDN 安全组等,请把
/wechat-unauth-login/callback加入 URL 白名单,否则微信发送的 XML 可能被拦截。 - 回调地址默认不带
.html后缀;如果站点启用了强制后缀,可在后台「路由」中确认实际可访问地址,必要时尝试追加.html。 - 保存服务器配置后,一定要点击「启用」。未启用时公众号不会把消息推送到站点。
插件配置说明
| 配置项 | 说明 |
|---|---|
| 启用未认证微信登录 | 总开关,关闭后前台不显示入口,接口与回调也不可用 |
| 公众号关注二维码 | 公众号后台下载的固定二维码图片,建议高清原图 |
| 弹窗标题 / 扫码提示 | 扫码弹窗的展示文案 |
| 消息校验 Token | 必填,必须与公众号服务器配置一致 |
| 公众号 AppID | 选填;安全 / 兼容模式建议填写,用于校验消息 AppID |
| EncodingAESKey | 明文模式留空;安全 / 兼容模式填写 43 位密钥 |
| 配对码有效期(分钟) | 浏览器配对码有效时间,默认 10 分钟 |
| 登录验证码有效期(分钟) | 公众号回复的验证码有效时间,默认 5 分钟 |
| 验证码最大尝试次数 | 连续输错次数上限,达到后本次配对码作废,默认 5 次 |
| 未绑定微信自动注册 | 开启后首次登录自动创建站点账号;关闭后仅允许已绑定账号登录 |
| 帮助关键词 | 用户直接发送该文字时回复帮助提示,默认「登录」 |
| 配对成功回复 | 支持 {code}、{minutes}、{pair} 占位符 |
| 关注欢迎语 / 已关注扫码回复 | 关注事件与扫码事件的自动回复 |
| 未找到配对码提示 / 配对码失效提示 / 配对码被占用提示 | 异常场景回复,支持 {pair} 占位符 |
微信要求被动回复在 5 秒内完成,本插件只做数据库读写,正常响应远低于该限制。
安全设计
- 配对码绑定浏览器 Session,验证时必须使用同一浏览器会话;
- 配对码与微信 OpenID 一对一绑定,先到先得,不能被第二个微信号占用;
- 登录验证码在数据库仅保存 SHA-256 哈希,不保存明文;
- 验证码一次性使用,超过有效期自动失效;
- 连续输错达到上限后本次配对码立即作废;
- 回调校验微信签名,安全模式额外校验
msg_signature与 AppID; - 登录跳转仅允许站内相对路径,防止开放重定向;
- 未认证公众号无法获取昵称与头像,插件不会伪造微信资料,仅以 OpenID 建立账号关联。
数据表
安装后自动创建两张表(实际表名带站点前缀):
wechatunauthpairing:配对码、验证码哈希、绑定 OpenID、状态与过期时间;wechatunauthaccount:公众号 OpenID、绑定用户、关注状态与最近消息时间。
常见问题
扫码后公众号没有回复验证码?
- 确认公众号后台服务器配置已启用,URL 与 Token 与插件配置一致;
- 确认用户发送的是网页上显示的最新 6 位配对码,且未超过有效期;
- 检查防火墙 / WAF 是否拦截了回调地址;
- 查看站点日志中是否出现
[WechatUnauthLogin]相关错误。
回调返回 403?
插件会校验 signature。使用微信公众平台的「服务器配置」保存时的校验请求测试,不要直接用浏览器访问回调地址。
安全模式收不到回复?
安全模式需要填写正确的 EncodingAESKey,建议同时填写 AppID;AppID 为空时会自动采用解密消息中的 AppID 进行回复加密。如果仍失败,可先切换为明文模式排查。
提示“该微信尚未绑定网站账号”?
说明后台关闭了「未绑定微信自动注册」,且该 OpenID 尚未关联站点账号。可开启自动注册,或由管理员在数据库中手工关联 wechatunauthaccount.user_id。
关闭自动注册后如何绑定已有账号?
当前版本以扫码登录为主,建议保持自动注册开启;如需严格的账号绑定流程,可在此基础上扩展「登录后绑定」页面。
目录结构
WechatUnauthLogin/
├── plugin.json 插件元信息
├── WechatUnauthLoginPlugin.php 入口:配置、插槽、资源注入、安装卸载
├── routes.php 前台接口与公众号回调路由
├── install.sql 数据表结构
├── controller/
│ ├── Login.php 获取配对码 / 轮询状态 / 验证登录
│ └── Callback.php 公众号消息回调(明文 + 安全模式)
├── service/
│ ├── Pairing.php 配对、验证码、账号绑定与登录
│ ├── WxCrypt.php 微信签名与 AES 加解密
│ └── WxMessage.php XML 解析与被动回复
├── static/ 弹窗样式与脚本(安装时复制到 public/static)
├── icon.svg 插件图标
└── README.md 使用文档版本
- 1.0.0:实现未认证公众号扫码登录完整链路(配对码、验证码、自动注册、明文/安全模式回调)。
更新记录 (4)
-
v1.0.04
2026-11-07
修复bug
-
v1.0.02
2026-11-06
新增微信绑定、解绑
-
v1.0.01
2026-11-06
修复配对码不显示
-
v1.0.0
2026-11-05
正式发布
微信客服
QQ官方交流群