流明请求验证不起作用

时间:2017-12-23 03:40:43

标签: laravel lumen php-7.1

在我的.env文件中,我的生产服务器有以下设置:

APP_ENV=production
APP_DEBUG=false

在laravel \ lumen docs中,它说如果我们在生产服务器上运行项目,我们应该将APP_DEBUG设置为false并从APP_ENV更改local例如,production。当我这样做时,流明的请求验证停止工作。但是当我将APP_DEBUG设置为true时,请求验证按预期工作。我错过了什么吗?

P.S。生产服务器环境PHP版本为7.1.12

更新

此外,我在App\Exceptions\Handler.php渲染方法中有以下代码,我认为这也会影响行为:

if (env('APP_DEBUG')) {
  return parent::render($request, $e);
}

$message = 'Внутренняя ошибка на сервере';
$response_code = 500;

if ($e instanceof MethodNotAllowedHttpException) {
  $message = 'Запрос не разрешен (неправильный метод запроса)';
  $response_code = 405;
}
elseif ($e instanceof NotFoundHttpException) {
  $message = 'Указан неверный адрес конечной точки API';
  $response_code = 404;
}
elseif ($e instanceof AuthorizationException) {
  $message = 'Отказ в доступе (нет прав на доступ)';
  $response_code = 403;
}
elseif ($e instanceof FatalThrowableError || $e instanceof \ErrorException) 
{
  $message = 'Неверный запрос URL-адреса (проверьте поля запроса)';
  $response_code = 400;
}
elseif ($e instanceof QueryException) {
  $message = 'Нарушение целостности базы данных';
  $response_code = 406;
}

return response()->json([
  'success' => false,
  'errors' => [
    [
      'id' => 'default',
      'message' => $message
    ]
  ]
], $response_code);

如果我设置APP_ENV=productionAPP_DEBUG=false,则异常的render方法会返回其json响应而不是验证响应。

1 个答案:

答案 0 :(得分:0)

我认为这里的问题是你不在这里处理Illuminate\Validation\ValidationException

根据您的需要,您可能想要更改:

if (env('APP_DEBUG')) {
  return parent::render($request, $e);
}

if (env('APP_DEBUG') || $e instanceof \Illuminate\Validation\ValidationException) {
  return parent::render($request, $e);
}

或添加其他elseif块,当$e\Illuminate\Validation\ValidationException实例

时,该块会执行您想要的操作