5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravel フォームリクエストを使用してバリデーションを指定したら403エラーが出た

Last updated at Posted at 2020-06-05

目的

  • フォームリクエスト(FormRequest)を使用してバリデーションを実装してブラウザから動作を確認したところルールにクリアしていても403エラーがでてしまい、当事象を解決した話をまとめる。

実施環境

  • ハードウェア環境
項目 情報
OS macOS Catalina(10.15.3)
ハードウェア MacBook Pro (16-inch ,2019)
プロセッサ 2.6 GHz 6コアIntel Core i7
メモリ 16 GB 2667 MHz DDR4
グラフィックス AMD Radeon Pro 5300M 4 GB Intel UHD Graphics 630 1536 MB
  • ソフトウェア環境
項目 情報 備考
PHP バージョン 7.4.3 Homwbrewを用いて導入
Laravel バージョン 7.0.8 commposerを用いて導入
MySQLバージョン 8.0.19 for osx10.13 on x86_64 Homwbrewを用いて導入

エラー内容

  • フォームリクエストを用いてバリデーションを実装し、定義したルールに違反していない状態でも下記のエラーが発生した。
    • 「403 This action is unauthorized.」

      スクリーンショット 2020-05-25 19.09.28.png

原因

  • このフォームリクエストを送信するための認証情報が存在しないためエラーが発生していた。
  • 本エラーをとにかく解決したい場合は当該のバリデーションルールが記載されているフォームリクエストクラスファイルを開きauthorizeメソッド内を修正する。
    • エラーの発生したフォームリクエストクラスファイルを下記に記載する。

      アプリ名ディレクトリ/app/Http/Requests/StoreContentPost.php
          <?php
          
          namespace App\Http\Requests;
          
          use Illuminate\Foundation\Http\FormRequest;
          
          class StoreContentPost extends FormRequest
          {
              /**
               * Determine if the user is authorized to make this request.
               *
               * @return bool
               */
              public function authorize()
              {
                  return false;
              }
          
              /**
               * Get the validation rules that apply to the request.
               *
               * @return array
               */
              public function rules()
              {
                  return [
                      //バリデーションルールを記載する
                      //'チェックするデータ名' => 'ルール1|ルール2'の様にルールを定義する
                      'title' => 'required',
                      'detail' => 'required',
                  ];
              }
          }
      
    • エラーを解決したしたフォームリクエストクラスファイルを下記に記載する。

      アプリ名ディレクトリ/app/Http/Requests/StoreContentPost.php
          <?php
          
          namespace App\Http\Requests;
          
          use Illuminate\Foundation\Http\FormRequest;
          
          class StoreContentPost extends FormRequest
          {
              /**
               * Determine if the user is authorized to make this request.
               *
               * @return bool
               */
              public function authorize()
              {
                  return true;
              }
          
              /**
               * Get the validation rules that apply to the request.
               *
               * @return array
               */
              public function rules()
              {
                  return [
                      //バリデーションルールを記載する
                      //'チェックするデータ名' => 'ルール1|ルール2'の様にルールを定義する
                      'title' => 'required',
                      'detail' => 'required',
                  ];
              }
          }
      
5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?