Laravel は人気のある PHP フレームワークであり、その開発者は非常に強力なルーティング システムを提供します。 Laravel でルーティングを使用すると、URL を特定のバックエンド ビジネス ロジック コードに簡単にマッピングできるため、RESTful API サービスや Web ページを簡単に作成できるようになります。しかし、実際のアプリケーションでは、特定の状況下でのみ一部のルートにアクセスさせたい場合があり、その際にLaravelが提供する隠しルーティング機能が非常に便利です。
Laravel の隠しルーティングとは何ですか?
Laravel の非表示ルーティングとは、ルーティング パスがルーティング定義に直接表示されないことを意味し、パスには特定のパラメーターを介するか、特定のメソッドを呼び出すことによってのみアクセスできます。隠しルーティングの目的は、パスワードのリセット、ログイン、その他の操作インターフェイスなどの一部の機密データを悪意のあるアクセスから保護することです。
Laravel で隠しルーティングを実装するにはどうすればよいですか?
Laravel で隠しルーティングを実装する方法はたくさんありますが、ここではよく使用される 2 つの方法を紹介します。
Laravel の名前付きルーティングには、ルートエイリアスを定義する機能があります。ルーティング定義では、「->name()」メソッドを使用してエイリアスを定義できます。例:
Route::get('index', 'HomeController@index')->name('home');
このコード行は、「home」という名前のルーティング エイリアスを定義します。これは、「」に対応します。インデックスのパス。
ルーティングを呼び出すときは、パスと同じアクセス効果を得るためにエイリアスを使用するだけです:
<a href="{{ route('home') }}">Home</a>
この場合、ユーザーは URL をクリックすることによってのみアクセスできます。 、URL パスを手動で入力してアクセスすることはできません。
Laravelではリクエストやレスポンスを処理するためのミドルウェア(Middleware)機能が提供されており、ミドルウェアの特性を利用してルートへのアクセスを制御することができます。まず、カスタム ミドルウェアを作成する必要があります。
php artisan make:middleware CheckPass
このコード行は、app/Http/Middleware ディレクトリに CheckPass という名前のミドルウェア クラスを作成します。このクラスでは、入力パラメータのチェック メソッドを定義できます (例:
class CheckPass { public function handle($request, Closure $next) { if ($request->has('password') && $request->input('password') === 'password') { return $next($request); } return abort(403, 'Unauthorized action.'); } }
A CheckPass ミドルウェアは、ユーザーによって渡されたパスワード パラメータが "password" であるかどうかをチェックするためにここで定義されています。条件を満たしている場合は、を選択し、アクセスを許可します。それ以外の場合は、エラー ページが返されます。
次に、ルート定義でこのミドルウェア保護を使用します。
Route::get('/example', 'ExampleController@showResult')->middleware('protect');
ルートを呼び出すとき、ユーザーは正しい応答を得るために GET リクエストを通じて「password」という名前のパラメータを送信する必要があります。
概要
Laravel が提供するルーティング システムは非常に柔軟で使いやすいですが、実際のアプリケーション シナリオでは、Laravel の隠しルーティングなど、より高度な処理ロジックが必要になることがよくあります。名前付きルーティングまたはミドルウェアを使用してこの機能を実装すると、データとアプリケーションのセキュリティを保護しながら、ユーザーにより良いエクスペリエンスを提供できます。
以上がLaravelでルーティングを非表示にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。