最初に
AWSにローカルで作成したlaravelをアップロード後、画面の表示まで完了しました。
JetStreamを使用したログイン機能を利用しており、
ログイン後マイページで項目毎に情報変更できるようにしております。
バリデーションを実装する際は、カスタムRequestを使用することは理解しておりますが、
Controller内で項目毎にそれぞれ更新できるように
name="mode" で条件分岐をして、それぞれの項目のバリデーションを実装しております。
画面内では名前・パスワード・プロフィール画像・住所を変更できるようにしておりますが、
名前、住所変更時に 403 Forbiddenが発生します。
パスワード、プロフィール画像は問題なく変更可能です。
環境
- php8
- laravel8 (認証にjetstream使用)
- mysql8
- amazon linux
コード
public function store(Request $request){ if ($mode === "photo") { $validated = $req->validate([ 'profile_photo' => 'required|image|max:2048', ]); //保存処理 } elseif ($mode === "name") { $validated = $req->validate([ 'first_name' => 'required|max:50', 'last_name' => 'required|max:50', ]); //保存処理 } elseif ($mode === "address") { $validated = $req->validate([ 'zip' => ['required', new ZipCodeRule], 'prefecture' => 'required', 'address' => 'required', ]); //保存処理 } elseif ($mode === "password") { $validated = $req->validate([ 'password' => ['required', Password::min(8)->letters()->numbers(),"max:20"] ]); //保存処理 } //リダイレクト return redirect('mypage'); }
bladeは項目毎に<form>で分けており、name="mode" で分岐してバリデーションを行なっていました。
開発環境(mac:docker)では問題なく動作していました。
しかし、名前・住所の変更のみ、403 Forbiddenが発生します。
公式では RequestFormクラスでは authorize()メソッドを true に設定することで403を返さないようにすると確認しました。
Controller内で$req->validate([])を使用したバリデーションでも、403エラーを返さない方法はありますか?
一部の項目のみ403エラーが発生する原因がわかりません。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー