1. ホーム
  2. Web プログラミング
  3. PHP プログラミング
  4. phpの例

Laravelで認証を使用するとトップページにジャンプする問題を解決

2022-01-14 18:55:01

validateなどのメソッドで検証する際、エラーになるとトップページに帰ってしまう

1.リクエストヘッダに直接

リクエストヘッダでacceptはappclication/jsonを使用し、HTTPリクエストのaccepted returnがjson形式のみとなるようにします。

2. フレームワークの関数を変更する

//vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php:136
//Remove $this->getRedirectUrl() from this method
//not recommended, in general try not to modify the code of the framework

3. を使用することが推奨されます。

BaseRequest基底クラスを定義する

<?php
    
namespace App\Http\Requests;
 
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;
 
class BaseRequests extends FormRequest
{
    /**
     * validate validation failure template
     * @param Validator $validator
     *    protected function failedValidation(Validator $validator)
    {
        $message = '';
        foreach (json_decode(json_encode($validator->errors()),1) as $error){
            $message = $error[0];
            break;
        }
        throw (new HttpResponseException(response()-> json([
            'code' => 400,
            'msg' => $message,
            'data' => []
        ])));
    }
}

個人的には、この方法は一言で言うとあまり良くないと思います。

4. 私が最終的に使用した解決策

JSONリクエストでは、Acceptのheadをappliaction/jsonに指定することで解決できますが、JSONでアクセスした場合は、通常のエラーメッセージを返し、JSON以外の場合はホームページを返して、ある程度の保護も兼ねています。

この記事は、Laravelは、ホームページのソリューションにジャンプする検証を使用して、ここで紹介されている、より関連するLaravelの検証は、ホームページのコンテンツにジャンプするスクリプトの家の前の記事を検索してくださいまたは次の関連記事を閲覧し続けるあなたは、将来的に多くのスクリプトの家をサポートします願っています!...