Laravel 5.7 のリリースに伴い、多くのユーザーがアクセスルーティングの問題を報告しました。この問題が発生すると、開発プロセスに多くの時間を無駄にする可能性があります。この問題を解決するために、この記事ではLaravel 5.7でルーティングにアクセスできない問題の解決策を詳しく紹介します。
まず、Laravel 5.7 のいくつかの新しい変更点を理解する必要があります。これにより、以前のコードが正しく実行されなくなる可能性があります。最も重要な変更の 1 つは、CSRF 保護ミドルウェアがデフォルトで追加されたことです。このミドルウェアは、ユーザーが送信したフォーム データがアプリケーションからのものであることを確認し、アプリケーションが CSRF 攻撃から来ることを防ぎます。
CSRF 保護ミドルウェアは Laravel 5.6 にすでに存在しますが、デフォルトでは有効になっていません。しかし、Laravel 5.7 では、Laravel チームはこのミドルウェアをデフォルトで有効にしました。したがって、Laravel 5.7 では、フォームを使用してデータを送信するときに CSRF トークンを追加する必要があります。
解決策:
Laravel 5.7 がルーティングにアクセスできない問題を解決するには 2 つの方法があります。 1 つ目の方法は、web.php ファイルに CSRF トークンを追加することです。 2 番目の方法は、CSRF 保護ミドルウェアを無効にすることです。
方法 1: web.php ファイルに CSRF トークンを追加します。
Web ミドルウェア グループは、Laravel 5.7 コードの RouteServiceProvider.php でデフォルトで使用されるため、Web に追加します。 .php ファイル CSRF トークンを作成する最も簡単な方法は、{{ csrf_field() }} メソッドを使用することです。
たとえば、POST リクエストを処理するルートがある場合:
Route::post('/foo', function () {
return 'Hello World';
});
CSRF トークンを生成するには、フォームに {{ csrf_field() }} メソッドを追加する必要があります:
このメソッドにより、Laravel 5.7 アプリケーションが POST リクエストを正常に処理できるようになります。
方法 2: CSRF 保護ミドルウェアを無効にする
CSRF 保護ミドルウェアを無効にすることは、Laravel 5.7 がルーティングにアクセスできない問題を解決するもう 1 つの方法です。このアプローチは、Laravel アプリケーションのセキュリティをわずかに低下させる可能性がありますが、アプリケーションが CSRF 攻撃の危険にさらされていない場合には実行可能です。
CSRF 保護ミドルウェアを無効にするには、VerifyCsrfToken クラスの $excel 属性に無視される URI を追加する必要があります。
app/Http/Middleware/VerifyCsrfToken.php ファイルを開き、無視するルートを $exc 属性に追加します:
protected $excel = [
'your-route-to-ignore'
] ;
たとえば、「register」ルートを無視したいとします:
protected $excel = [
'register'
];
このメソッドLaravel 5.7 アプリケーションがすべてのリクエストを正常に処理できることを確認します。
結論:
一般に、Laravel 5.7 でルーティングにアクセスできない問題は、主にデフォルトで有効になっている CSRF 保護ミドルウェアが原因で発生します。したがって、開発中にこの問題が発生した場合は、次の 2 つの方法を試して解決できます。 CSRF 保護ミドルウェアを無効にする場合は、機密データまたは重要なデータが含まれないルートにのみそれを使用する必要があります。この方法では、Laravel アプリケーションのセキュリティがわずかに低下する可能性があるため、アプリケーションのセキュリティを確保するには方法 1 を使用することをお勧めします。
以上がLaravel 5.7はルーティングにアクセスできませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。