chore(config): 微信登录配置加固 + 配置自检脚本
配置: - manifest.json mp-weixin.appid = wx40ca4b02d4d1cb58(构建产物已自动同步) - .env 新增 [sms] 段:mock / mock_code,手机号登录验证码改为配置驱动 (Auth::login 不再硬编码 123456;mock=0 时返回 2010 提示接入短信) - 服务端 .env [wechat] appid/secret 已就位并与小程序一致 加固: - 新增 utils/wxlogin.js:微信登录单飞(防静默登录与手动登录抢同一个一次性 code) + 40029/40163 自动换新 code 重试一次 - Auth::wxlogin 失败时回传 wx_errcode,供客户端判断是否重试 - 登录失败自动展开手机号兜底通道 新增 tests/config_check.js:一键核对 appid 三处一致性 / 接口连通 / HTTPS 证书 / 短信开关 验证:config_check 8/8 + 163 项断言回归全通过
这个提交包含在:
@@ -14,7 +14,9 @@ class Auth extends Base
|
||||
protected $noNeedLogin = ['login', 'wxlogin'];
|
||||
|
||||
/**
|
||||
* 手机号 + 验证码登录(验证码固定 123456,联调用;接入短信后走 Sms)
|
||||
* 手机号 + 验证码登录(兜底通道)
|
||||
* 验证码来源由 .env 的 [sms] 段控制:mock=1 时使用 mock_code(联调用),
|
||||
* 接入真实短信后置 mock=0 并在此处改为 Sms::check($mobile, $code, 'mobilelogin')
|
||||
* @ApiMethod (POST)
|
||||
*/
|
||||
public function login()
|
||||
@@ -27,8 +29,11 @@ class Auth extends Base
|
||||
if (!Validate::regex($mobile, "^1\d{10}$")) {
|
||||
$this->error('手机号格式不正确');
|
||||
}
|
||||
if ($code !== '123456') {
|
||||
$this->error('验证码不正确');
|
||||
|
||||
$mockOn = (int)\think\Env::get('sms.mock', 1);
|
||||
$mockCode = (string)\think\Env::get('sms.mock_code', '123456');
|
||||
if (!($mockOn === 1 && $mockCode !== '' && (string)$code === $mockCode)) {
|
||||
$this->error('短信通道尚未接入,请联系管理员开通', ['sms_ready' => 0], 2010);
|
||||
}
|
||||
|
||||
$user = \app\common\model\User::getByMobile($mobile);
|
||||
@@ -130,7 +135,7 @@ class Auth extends Base
|
||||
|
||||
$wx = \app\common\library\WxLogin::jscode2session($code);
|
||||
if (isset($wx['error'])) {
|
||||
$this->error($wx['error']);
|
||||
$this->error($wx['error'], ['wx_errcode' => isset($wx['errcode']) ? (int)$wx['errcode'] : 0]);
|
||||
}
|
||||
$ret = \app\common\library\WxLogin::provision(
|
||||
$wx['openid'],
|
||||
|
||||
在新工单中引用
屏蔽一个用户