フォームリクエストでのバリエーションを使用してPOSTした際にエラーが発生した。
403エラー発生
"THIS ACTION IS UNAUTHORIZED."
「権限がありません」とのこと。
原因
フォームリクエストのauthorizeメソッドがfalseのままだった。
app/Http/Requests/RecordPostRequest.php
public function authorize()
{
return false;
}
解決策
これをtrueに変えればOK。
app/Http/Requests/RecordPostRequest.php
public function authorize()
{
return true;
}
authorizeメソッドとは
Laravelにより生成される各フォームリクエストには、authorizeとrulesの2つのメソッドがあります。
ご想像のとおり、authorizeメソッドは、現在認証されているユーザーがリクエストによって表されるアクションを実行できるかどうかを判断し、rulesメソッドはリクエスト中のデータを検証するバリデーションルールを返します。
authorizeメソッドがfalseを返すと、403ステータスコードのHTTPレスポンスを自動的に返し、コントローラメソッドは実行しません。
アプリケーションの別の部分でリクエストの認可ロジックを処理する場合は、authorizeメソッドからtrueを返してください。(すべて公式ドキュメントより)