】「こんなとき」のミドルウェア全7実例(ダウンロード可)さてさて、私がLaravelを使い始めたのはバージョン4.2が出てすぐだったのですが、現在はすでに最新バージョンが5.8になり、ちらほら5.9の話題もニュースとしてみかけるようになりました。前バージョンをよく使っていた開発者からすると「今は普通に使っているけど、すごく強力な機能」の便利さを再認識する場面が結構あったりします。その中のひとつが今回の話題「ミドルウェア」です。ミドルウェアとは、ページにアクセスする直前に実行されるもので、条件によってリダイレクトしたり別のページを見せるといったことが簡単にできるようになっています。(例えば、ログインしたユーザーしか見られないページもミドルウェアのひとつですね)ということで、今回はこのミドルウェアの基本的な使い方と「こんなとき」に使えるサンプルを実例で紹介してみたいと思います。合わせて読みたいミドルウェアの基本的な使い方ミドルウェアの作り方Laravelにはミドルウェアを作成するコマンドが用意されていますので、これを使います。管理者だけが見られるようなミドルウェアを作成する場合は次のようになります。AdminAuthすると、app/Http/Middleware/AdminAuth.phpが作成され、中身は以下のようになっています。}}そして、この中に管理者だけが表示できるようコードを追加します。例としては以下のようになります。'管理者権限がありません。$next($request);を実行すれば通常通りページが表示されるということになります。条件が合わなかったときにリダイレクトすることもできます。その場合は次のようにしてください。特定のページのみ有効にするミドルウェアは作成しただけでは有効になりません。ミドルウェアを有効にするには、app/Http/Kernel.phpに登録をする必要があります。ある特定のページだけでミドルウェアを有効にしたい場合はこのファイル内の$routeMiddlewareに登録することになります。\App\Http\Middleware\AdminAuth::class];そして、登録が完了したら、次は実際のルートに適用させます。'AdminController@index')->middleware('admin_auth');これでhttp://******/adminにはAdminAuthミドルウェアが適用されることになります。この方法ではページが増えていくごとに毎回middleware()を書かなければいけませんので少しめんどうですよね。その場合には次のようにgroup()を使って一気にミドルウェアを指定することができます。この中は、全てミドルウェアが適用されます。'HomeController@middleware_test');});さらに、実はミドルウェアはコントローラーにも設置することができて、その場合は以下のように__construct()内で指定します。}全てのページで有効にする続いて、全てのページでミドルウェアを有効にする方法です。この場合、app/Http/Kernel.php内の$middlewareGroupsに作成したミドルウェアを登録することになります。],これで全てのページにミドルウェア適用されることになります。基本的な使い方は以上ですので、次の項目からは実際のケーススタディで見ていきましょう!こんなときのミドルウェア・実例HTTPS接続のみを許可する(自動リダイレクト)もしHTTPで接続してきた場合は強制的にHTTPSのURLに転送するミドルウェアです。production(つまり本番環境)か?をチェックし、もし両方ともtrueであればリダイレクトするという流れになります。特定のIPアドレスだけ許可する例えば、ある特定のIPアドレスだけからしかページを見ることができなくなるミドルウェアです。}}なお、IPアドレスを範囲で指定したい場合は以下のようにするといいでしょう。usersテーブルにrole(つまりユーザータイプ)のデータが入っていて、これがadminもしくはsuper_adminの場合だけページ閲覧できるようになるミドルウェアです。'管理者権限がありません。}}特定の言語のみ許可する例えば、あるウェブサイトが日本語だけ対応していてるので日本語が理解できる人たちだけにページ表示をしたい場合です。言語情報はブラウザのヘッダーを元にして取得しているので、その気になればブラウザ設定でいくらでも変更は可能です。スマホの場合はリダイレクト例えば、あるウェブサイトにはスマートフォン専用のページがあり、もしスマートフォンでアクセスしてきた場合はそちらへリダイレクトさせたい場合です。detectというパッケージを使っています。インストールは以下のコマンドで実行してください。日本国内からのアクセスのみを許可するミドルウェアです。この方法はgeoplugin.comというサイトのAPIを利用しているため、ページの表示に時間がかかってしまう場合があります。(そのため、もし可能であればnginxなどでIPを範囲で許可するなどの方がいいかもしれません)特定の曜日のみ表示を許可する例えば、水曜日だけ商品が割引になる申し込みページを作りたい場合です。}}ソースコードをダウンロードする今回実際に開発したファイルを以下からダウンロードすることができます。】「こんなとき」のミドルウェア全7実例おわりにということで、今回は「こんなとき」に焦点をあててミドルウェアの紹介をしてみました。使い方によってはより様々な制限やリダイレクトを実装することができますので、ぜひみなさんもいろいろ試してみてはいかがでしょうか。開発スキルプログラム開発は15年以上。Laravel、Vue.jsをメインとしてPython(機械学習)やElectronの開発もお引き受けしております。過去2度カナダのバンクーバーに滞在していました。開発状況によりましては開発をお待ちいただく可能性がございますが、いつでもご相談は受けさせていただいております。お気軽にご連絡ください!お問い合わせフォーム開発してほしい機能を募集中!MITライセンスで公開します。詳しくはこちらの記事をご覧ください。ぷれりり・プレスリリース掲載無料のプレスリリース・スタンド!播磨孤道(はりまこどう)兵庫周辺のゆったり自転車一人旅の記事を書いていきます。