以前、「Cloudflare Pagesに Basic認証をかける」というエントリーを書きましたがその続きです。
紹介した方法ではプレビュー用のブランチなど含めてすべての環境でBasic認証がかかってしまいます。
開発中は良いのですが本番公開後は、本番環境にはBasic認証をかけずに、それ以外の環境でBasic認証をかけたいというケースが多いと思います。
Cloudflare Pagesではプロダクション環境とプレビュー環境で環境変数を変えることができますのでプレビューのみ除外することもできます。
しかし、Cloudflare Pagesではカスタムドメイン等を利用している場合はプロダクション環境でも、www.to-r.net
といった本番ドメイン以外に、デフォルトで割り当てられる {プロジェクト名}.pages.dev
といった pages.dev のサブドメインも割り当てられてしまいます。
本番ドメイン以外にBasic認証
これらの問題を解決するのには本番ドメイン以外にBasic認証をかけてしまうのが手っ取り早いです。
Cloudflare Pages Functionsでは request.url
でリクエストがあったURL情報が取得できますので、以前紹介したBasic認証をの冒頭で本番ドメイン以外にBasic認証がかかるように適用すれば可能です。
async function handleRequest({ next, request }) {
const url = new URL(request.url);
// 本番ドメインではベーシック認証をかけない
if (url.origin === "https://www.to-r.net") {
return await next();
}
// これ以降は以前紹介したコードのまま
}
Node.jsでBasic認証をハンドリングをする機会はCDN Edge以外では少ないと思いますので必要な人は参考にしてください。
フロントエンドエンジニア積極採用中
株式会社トゥーアールでは現在フロントエンドエンジニア積極的に採用中です!
興味がある人は採用ページをチェック!!