LoginSignup
7
7

More than 5 years have passed since last update.

laravel5でMiddlewareを用いた暗号化通信への強制リダイレクト

Posted at

はじめに

昨今,セキュリティーの重要性が高まっていくなか,現在あるWebAPIを提供するためにlaravelで開発しているところですが,これからの時代は暗号化通信が基本となるので自分がネットで類似する記事を探したところあまりヒットしなかったので,メモ程度に残します.

Middleware

簡単に説明すると,Middlewareは特定のルートに関連付けられた動作を行う前に読み込まれるフィルター機能のようなものです.
そのほかにもいろいろとログイン画面へ飛ばすとか,laravel4の時にあった機能で特定のルートに関連付けられた動作を終えたあとに作動させるフィルターも作れます.
(laravel4のときはApp::beforeおよびApp::afterで実装されていましたが,laravel5ではMiddlewareで実現させるように変更されたようです)

実装

まず,コマンドラインなどでlaravelのプロジェクトのルートへ移動します.

cd /var/www/app

次にphp artisanでMiddlewareを作ります.

# php artisan make:middleware AppBefore

今回はAppBeforeというネームでMiddlewareを作成します.
次にapp/Http/Kernel.php$middleware'App\Http\Middleware\AppBefore'を追加します.

/app/Http/Kernel.php
<?php namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel {

    /**
     * The application's global HTTP middleware stack.
     *
     * @var array
     */
    protected $middleware = [
        'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
        'Illuminate\Cookie\Middleware\EncryptCookies',
        'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
        'Illuminate\Session\Middleware\StartSession',
        'Illuminate\View\Middleware\ShareErrorsFromSession',
        'App\Http\Middleware\VerifyCsrfToken',
        'App\Http\Middleware\AppBeforeFilter',
    ];

そして,Middlewareを編集します.

/app/Http/Middleware/AppBefore.php
<?php namespace App\Http\Middleware;

use Closure;

class AppBeforeFilter {

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (!$request->secure() && env('APP_ENV') === 'local') {
            return redirect()->secure($request->getRequestUri());
    }

        return $next($request);
    }

}

上記はHTTPリクエストは暗号化通信で行われており,かつ環境がローカル環境であるかを確認し,そうでなければ,暗号化通信へ強制的にリダイレクトさせるようになっています.

上記の方法で暗号化通信へ切り替えることができますが,少しいじればいろいろなことができそうです.
もちろんここではしませんが,何らかのビューを返すこともできるはずです.

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7