ロゴテキスト ロゴ

    Netlify x Next.jsのプレビュー環境にBasic認証を設定する

    Netlify x Next.jsのプレビュー環境にBasic認証を設定する

    ProプランじゃないとBasic認証はかける事が出来ないため注意です。



    ビルドされたフォルダに「_headers」ファイルを追加しBasic認証の設定を記載する事でBasic認証をかける事が出来ます

    _headersファイル

    公式: Password protection | Netlify Docs



    公式ページに書かれている以下の記述の場合、

    /something/*
      Basic-Auth: someuser:somepassword anotheruser:anotherpassword

    Netlifyに上げたプロジェクトのsomethingフォルダを開こうとした場合にBasic認証でユーザ名、パスワードが求められます。


    その際に

    • ユーザー名: someuser パスワード: somepassword
    • ユーザー名: anotheruser パスワード: anotherpassword

    それぞれの組み合わせでページを開く事が出来ます。

    echoで_headerを書き出すコマンドを追加

    以下のコマンドで「_headers」ファイルをNext.jsで書き出した out/ フォルダに作る事が出来ます。

    $ echo "/*\n  Basic-Auth: name:pass" > out/_headers


    上記の場合

    /*
      Basic-Auth: name:pass

    となるため、Netlifyに上げたプロジェクトのフォルダファイルを開こうとした際全てにBasic認証がかけられます



    簡単に実行出来るようにnpm-scriptsに登録します。

    package.json
    "scripts": {
      ・・・
      "echo-netlify-basic-auth": "echo \"/*\\n  Basic-Auth: name:pass\" > out/_headers"
    },

    netlify.tomlを設定する

    プレビュー時にのみBasic認証をかけたいので context.deploy-preview の場合のみ、ビルドを行った後にBasic認証用の_headersファイルを作成するようにします。

    netlify.toml
    [context.production]
    command = "yarn run deploy"
    [context.deploy-preview]
    command = 'yarn run deploy && yarn run echo-netlify-basic-auth'
    プレビュー環境を開くとBasic認証がかかっている


    $yarn run deploy コマンドに関しては ↓ の記事を参照して下さい

    環境変数でユーザ名/パスワードを設定する

    Basic認証のユーザー名/パスワードをコード上で管理したくないのでNetlifyの環境変数を使います



    Settings > Build&DeployのEnvironmentに以下のように設定します。

    • BASIC_AUTH_ID・・ ユーザ名の値
    • BASIC_AUTH_PASSWORD・・ パスワードの値
    NetlifyのEnvironmentでBasic認証のユーザ名/パスワードを設定

    コードを以下のように変更します

    package.json
    "scripts": {
      ・・・
      "echo-netlify-basic-auth": "echo \"/*\\n  Basic-Auth: $BASIC_AUTH_ID:$BASIC_AUTH_PASSWORD\" > out/_headers"
    },


    もしこれでデプロイをすると、

    • ユーザー名: name パスワード: pass

    でBasic認証が通るようになります。

    プロフィールの背景画像 プロフィール画像
    Yuki Takara
    都内でフリーランスのエンジニアをやってます。フロントとアプリ開発メインに幅広くやってます。