Laravel 5.5 401 エラー: 解決方法は?
Laravel は、Web アプリケーション開発の効率を向上させる非常に人気のある PHP フレームワークです。ただし、Laravel を使用すると 401 エラーが発生する場合があります。このエラーは通常、認証の失敗またはセッションの期限切れによって発生しますが、他の理由によって発生する可能性があります。この記事では、Laravel 5.5 401 エラーを解決する方法を説明します。
まず、認証が正しいことを確認します。 Laravel では、Laravel 独自の Auth ファサードを使用したり、OAuth 認証に Laravel Passport を使用したりするなど、さまざまな認証方法を使用できます。リクエストを送信する前に、本人確認が完了していることを確認してください。
たとえば、Auth ファサードを使用してユーザーを認証する場合は、必ず認証ミドルウェアを使用してユーザーのアクセスを認証してください。これをルート定義で次のように使用できます。
Route::get('/dashboard', ['middleware' => ['auth'], function () { // 此处为您的代码 }]);
ルートが正しいかどうかを確認します。ルーティングが正しくない場合、エラー コード 401 が返されます。ルートが正しく定義されていること、およびコントローラーとメソッドが一致していることを確認してください。ルートをブラウザで表示するか、ターミナルでコマンド「phpArtisan Route:list」を使用して表示できます。
Laravel では、クロスサイトリクエスト攻撃を防ぐためにデフォルトで CSRF 保護が有効になっています。アプリケーションが POST、PUT、または DELETE リクエストを使用する場合は、リクエストに CSRF トークンを含める必要があります。 CSRF トークンを含めないと、401 エラーが返されます。
この問題を解決するには、Laravel で @csrf ディレクティブを使用するか、AJAX リクエストの送信時にリクエストに CSRF トークンを追加します。たとえば、AJAX リクエストの場合、次のコードを JavaScript ファイルに追加できます。
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
Laravel 5.5 以降を使用し、API ルーティングを使用すると、CORS の問題が発生する可能性があります。 Cross-Origin Resource Sharing (CORS) は、Web ページが 1 つのドメインから別のドメインにリソースを要求できるようにする、Web ブラウザと Web サーバー間のメカニズムです。 CORS が正しく構成されていない場合、ブラウザはリクエストを停止し、401 エラーを返します。
この問題を解決するには、Laravel で barryvdh/laravel-cors 拡張機能を使用します。この拡張機能を使用すると、CORS ルールをカスタマイズし、Laravel アプリケーションの CORS 問題を解決できるようになります。
最後に、セッションの有効期限が切れているかどうかを確認します。セッションの有効期限が切れると、アプリケーションはユーザーを認証できなくなり、401 エラーが返されます。 Laravel では、セッション マネージャーは Cookie を使用してユーザー セッションを追跡するため、ユーザーが Web ブラウザを閉じると、セッションがすぐに期限切れになる可能性があります。セッションマネージャーの有効期限はconfig/session.phpで設定できます。
ユーザーが長期間非アクティブだった後に突然アプリケーションにアクセスした場合にも、同じ問題が発生する可能性があります。この状況は、config/session.php で「lifetime」および「expire_on_close」オプションを設定することで解決できます。
概要
401 エラーは、Laravel アプリケーションでよくあるエラーの 1 つである可能性があります。上記のいずれかの状況では、401 エラーが発生する可能性があります。したがって、401 エラーが発生した場合は、認証、ルーティング、CSRF 保護、CORS、セッションなどの側面を確認して問題を見つけるようにしてください。問題を発見したら、簡単に修正して、Laravel アプリケーションが正しく動作していることを確認できます。
以上がlaravel5.5 401エラーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。