現状の認証情報の確認方法を知る
現状でもログアウトしてから http://localhost:3000/inbox
にアクセスすると、http://localhost:3000/
にリダイレクトされます。
ではこの実装はどこにあるのでしょうか?
現状では、apps/workspace/app/(detail)/layout.tsx
とapps/workspace/app/(dashboard)/layout.tsx
の二箇所のLayout
で同様の実装をして実現しています。
しかし、この実装では機密情報が漏れる可能性があります。
これからそれを確認してみましょう。
curl を使って直接アクセスしてみる
下記のコマンドを実行してみましょう
すると、出力結果にメールの内容が取得できてしまっていることがわかります。
詳細の理由については、ページ最下部の参考リンクを参照してください。
middleware を使って認証情報を確認する
これを防ぐためには、middlewareを使って認証情報を確認するようにしましょう。
まずは、apps/workspace/app/(detail)/layout.tsx
とapps/workspace/app/(dashboard)/layout.tsx
の二箇所のLayout
からリダイレクト処理を削除します。
次に、middlewareを作成します。
これで Middleware での認証が追加されました。
もう一度でcurlでリクエストしてみましょう
すると、下記のように情報が漏洩することなくリダイレクトされることがわかります。
まとめ
このページでは、Layoutでのリダイレクト処理は、機密情報が漏れる可能性があることを確認しました。
また、middleware を使った認証情報の確認方法を学びました。
middleware では、認証情報の確認以外でもさまざな用途で利用することができます。
参考リンク