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

## 目的

- フォームリクエスト(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.」

        <img width="609" alt="スクリーンショット 2020-05-25 19.09.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/049ceb2a-68f3-5d66-c708-0c63b71c6ae8.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',
                    ];
                }
            }
        ```