allowOrigin); header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization'); header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS'); // 预检请求直接返回200 if (Request::method(true) == 'OPTIONS') { exit(); } // 初始化认证服务 $this->authService = new AuthService(); } /** * 用户登录 * @return \think\response\Json */ public function login() { // 获取登录参数 $params = Request::only(['username', 'password', 'is_encrypted']); // 参数验证 $validate = validate('common/Auth'); if (!$validate->scene('login')->check($params)) { return ResponseHelper::error($validate->getError()); } try { // 判断密码是否已加密 $isEncrypted = isset($params['is_encrypted']) && $params['is_encrypted'] === true; // 调用登录服务 $result = $this->authService->login( $params['username'], $params['password'], Request::ip(), $isEncrypted ); return ResponseHelper::success($result, '登录成功'); } catch (\Exception $e) { return ResponseHelper::error($e->getMessage()); } } /** * 手机号验证码登录 * @return \think\response\Json */ public function mobileLogin() { // 获取登录参数 $params = Request::only(['mobile', 'code', 'is_encrypted']); // 参数验证 $validate = validate('common/Auth'); if (!$validate->scene('mobile_login')->check($params)) { return ResponseHelper::error($validate->getError()); } try { // 判断验证码是否已加密 $isEncrypted = isset($params['is_encrypted']) && $params['is_encrypted'] === true; // 调用手机号登录服务 $result = $this->authService->mobileLogin( $params['mobile'], $params['code'], Request::ip(), $isEncrypted ); return ResponseHelper::success($result, '登录成功'); } catch (\Exception $e) { return ResponseHelper::error($e->getMessage()); } } /** * 发送验证码 * @return \think\response\Json */ public function sendCode() { // 获取参数 $params = Request::only(['mobile', 'type']); // 参数验证 $validate = validate('common/Auth'); if (!$validate->scene('send_code')->check($params)) { return ResponseHelper::error($validate->getError()); } try { // 调用发送验证码服务 $result = $this->authService->sendLoginCode( $params['mobile'], $params['type'] ); return ResponseHelper::success($result, '验证码发送成功'); } catch (\Exception $e) { return ResponseHelper::error($e->getMessage()); } } /** * 获取用户信息 * @return \think\response\Json */ public function info() { try { $result = $this->authService->getUserInfo(request()->userInfo); return ResponseHelper::success($result); } catch (\Exception $e) { return ResponseHelper::unauthorized($e->getMessage()); } } /** * 刷新令牌 * @return \think\response\Json */ public function refresh() { try { $result = $this->authService->refreshToken(request()->userInfo); return ResponseHelper::success($result, '刷新成功'); } catch (\Exception $e) { return ResponseHelper::unauthorized($e->getMessage()); } } }