post([ 'username', 'password', 'token', 'captcha' ]); // 验证参数 $validate = new LoginValidate(); if (!$validate->check($post)) { return error($validate->getError()); } // 校验验证码 $code = Cache::get('captcha:token.' . $post['token']); if (!$code) { return error('验证码不存在或已过期!'); } Cache::delete('captcha:token.' . $post['token']); // 校验 if (!password_verify($post['captcha'], $code)) { return error('验证码错误!'); } // 验证用户 $user = UserModel::usernameOrMobile($post['username'])->find(); if (!$user) { return error('用户不存在!'); } // 验证密码 if ($user['password'] != password_with_salt($post['password'], $user['salt'])) { return error('密码错误!'); } // 验证用户状态 if ($user['status'] == -1) { return error('用户已禁用,请联系管理员!'); } // 生成 jwt token $token = JWTAuth::builder(['uid' => $user['id']]); return success('登录成功!', [ 'uid' => $user['id'], 'nickname' => $user['nickname'], 'avatar' => $user['avatar'], 'token' => $token, ]); } }