programing

Laravel에서 유효하지 않은 후 홈페이지로 리디렉션

css3 2023. 10. 12. 23:24

Laravel에서 유효하지 않은 후 홈페이지로 리디렉션

저는 Laravel 5.3으로 RESTful API를 개발하고 있어서 일부 기능을 테스트하고 있고 컨트롤러에 요청하고 있습니다.데이터베이스에 필드를 추가하기 전에 사용자가 보내는 요청을 확인해야 하므로 사용자 정의 FormRequest를 사용하여 확인합니다.

Postman에서 API를 테스트하고 잘못된 요청을 보냈을 때 응답이 홈페이지로 리디렉션됩니다.나는 문서를 읽고 다음과 같은 문장을 발견했습니다.

유효성 검사에 실패할 경우 리디렉션 응답이 생성되어 사용자를 이전 위치로 다시 보냅니다.또한 오류는 세션에 플래시되어 표시할 수 있습니다.요청이 AJAX 요청인 경우, 유효성 검사 오류의 JSON 표현을 포함하여 422 상태 코드의 HTTP 응답이 사용자에게 반환됩니다.

어떻게 하면 이걸 막을 수 있을까요?아니면 포스트맨에 AJAX 모드가 있습니까?좋은 제안이 있습니까?

또한 어떠한 기능도 재지정하지 않고 달성할 수 있습니다.라라벨은 두 가지를 모두 지원하도록 제작되었습니다.Json& 보통 페이지다음에서 설정을 변경하십시오.postman그리고 세트Accept로.application/json아래와 같이

Laravel is SMART ;-)

사용자 정의 양식 요청 확장Illuminate\Foundation\Http\FormRequest. Within은 다음과 같은 리디렉션을 수행하는 함수입니다.response(). 사용자 정의 FormRequest 내에서 이 기능을 재정의하여 유효성 검사가 유효하지 않게 응답되는 방법을 변경하기만 하면 됩니다.


namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\JsonResponse;

class CustomFormRequest extends FormRequest
{
    /**
     * Custom Failed Response
     *
     * Overrides the Illuminate\Foundation\Http\FormRequest
     * response function to stop it from auto redirecting
     * and applies a API custom response format.
     *
     * @param array $errors
     * @return JsonResponse
     */
    public function response(array $errors) {

        // Put whatever response you want here.
        return new JsonResponse([
            'status' => '422',
            'errors' => $errors,
        ], 422);
    }
}

저는 라라벨 8에서도 같은 문제에 직면했습니다.요청 클래스에서는 실패한 유효성 검사 메서드를 재정의할 수 있습니다.

<?php

...
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;


class RegisterRequest extends FormRequest
{

    ...

    protected function failedValidation(Validator $validator)
    {
        throw new HttpResponseException(response()->json(['errors' => $validator->errors()], 422));
    }

    ...


}

언급URL : https://stackoverflow.com/questions/39296986/prevent-redirect-to-homepage-after-invalid-in-laravel