需求概述
默认注册登录流程较为简单,实际站点往往需要图形验证码、短信验证码以及微信/QQ 第三方登录。本文介绍基于 B2 现有登录体系的二开思路。
一、图形验证码接入
在登录表单增加验证码字段,服务端校验:
Text
add_action('login_form', function () {
echo '';
});
add_filter('authenticate', function ($user, $username, $password) {
if (isset($_POST['captcha']) && strtolower($_POST['captcha']) !== strtolower($_SESSION['ji_captcha'])) {
return new WP_Error('captcha', '验证码错误');
}
return $user;
}, 10, 3);
二、短信验证码
建议接入阿里云/腾讯云短信 SDK,流程:发送验证码 → 存储(transient 5 分钟)→ 校验:
Text
set_transient('ji_sms_' . $phone, $code, 300);
if (get_transient('ji_sms_' . $phone) === $input) { /* 通过 */ }
三、第三方登录
推荐使用 WordPress 社交登录插件(如 Nextend Social Login)配合 B2 使用,注意以下几点:
- 第三方登录回调地址必须是 https,否则微信/QQ 会拒绝。
- 首次第三方登录自动创建用户,并写入 openid 作为绑定标识。
- 绑定关系存入 usermeta,避免重复创建账号。
注意事项
- 验证码与短信接口务必做频率限制,防止被刷。
- 第三方登录回调需校验 state 参数防 CSRF。

