どーも、ぐるたか@guru_takaです。
SPAといった静的アプリをFirebase Hostingにデプロイする際に、Basic認証をかけたかったので、メモしておきます。
以下の記事を参考にしています。
参考
Firebaseでベーシック認証をかけるベストな方法|松井 貴史|note
目次
手順
STEP.1
firebase init
でFirebase HostingとFunctionsを導入STEP.2
functions/index.js
の編集STEP.3
functionsフォルダに必要なパッケージをインストール
STEP.4
firebase.json
の編集STEP.5
functions/static
に静的ファイルを移動STEP.6
後はデプロイするだけ!
STEP.1:firebase init
でFirebase HostingとFunctionsを導入
コマンドライン
# firebaseのCLIが使えない人はfirebase-toolsをインストール
$ npm install -g firebase-tools
# ログイン
$ firebase login
# 初期化
$ firebase init
ここで、Firebase HostingとFunctionsを選択。設定はデフォルトのままでOKです!
STEP2:functions/index.js
の編集
以下のようにすればOKです。
functions/index.js
const functions = require('firebase-functions')
const express = require('express')
const basicAuth = require('basic-auth-connect')
const app = express()
app.all('/*', basicAuth(function(user, password) {
return user === 'user' && password === 'pass';
}));
app.use(express.static(__dirname + '/static/'))
exports.app = functions.https.onRequest(app)
userとpasswordがBasic認証で必要な項目になります。
Basic認証がうまくいくと、ミドルウェア関数であるexpress.static
を通じて、staticフォルダ内の静的ファイルが表示されます!
STEP3:functionsフォルダに必要なパッケージをインストール
functions内のフォルダに、必要なパッケージをインストールします。
/functions
$ npm install --save express basic-auth-connect
STEP4:firebase.json
の編集
以下のようにfirebase.json
を編集します。
firebase.json
{
"hosting": {
"public": "public",
"rewrites": [
{
"source": "**",
"function": "app"
}
],
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
]
}
}
STEP5:publicフォルダの中身をfunctions/static
に移動
後はpublicフォルダの中身をfunctions/static
に移動すればOKです!
コマンドライン
mv public/* functions/static/
ここでは、publicの中身が空にすると初めて、rewrite処理でbasic認証がかかる処理へ移行します。
STEP6:後でデプロイのみ!
最後に、おなじみのコマンドでデプロイするだけです!
$ firebase deploy
コメントを残す