0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Copilotとのたった2回の会話で解決】Next.js × Supabase 認証リダイレクト問題をシンプルに修正した話

Last updated at Posted at 2025-05-01

【Copilotとのたった2回の会話で解決】Next.js × Supabase 認証リダイレクト問題をシンプルに修正した話

Next.js と Supabase を使ってシフト管理アプリを作っていたところ、「ログインしていないとホーム画面が見れない」かつ「ログイン後に勝手に /calendar に遷移する」という状態に陥りました。

今回はこの問題を、GitHub Copilotとたった2回やり取りしただけでスムーズに解決できた体験を共有します。
該当のサイト: https://shift-app-mu.vercel.app/


🐞 問題:ホームページにアクセスできない & 勝手にカレンダーページへリダイレクトされる

現象は次のとおりです:

  • ログインしていないと /(ホームページ)にアクセスできない
  • ログイン後に /calendar に自動でリダイレクトされてしまう
  • ホームページでとどまりたいのに、それができない

💬 Copilotとの会話1:

「ログイン後に勝手に Calendar page に遷移せず、ログイン前後でホームページに止まれるようにしてください」

Copilotの提案:

  • page.tsx にあった useEffect の自動遷移ロジックを削除
  • 代わりに、ログイン状態に応じて表示するボタンを切り替える実装を提案
{session ? (
  <Link href="/calendar">
    <Button>カレンダーへ</Button>
  </Link>
) : (
  <Link href="/login">
    <Button>ログイン</Button>
  </Link>
)}

✅ これにより、自動遷移は止まり、ユーザーが自分でページを選べるように!


💬 Copilotとの会話2:

「loginしていない状態でも home 画面は開けるようにしてください」

Copilotの提案:

  • middleware.ts に定義されていたパブリックルートから / が抜けていたことに言及
  • publicRoutes/ を追加するようにアドバイス
// 修正前
const publicRoutes = ["/login", "/signup"];

// 修正後
const publicRoutes = ["/", "/login", "/signup"];

✅ これにより、ログイン前でも / にアクセスできるように!


✅ 修正結果まとめ

ステップ 会話内容 修正内容
1回目 ログイン後に勝手にリダイレクトしないでほしい useEffect を削除し、ログイン状態でボタン表示を制御
2回目 ログイン前でもホーム画面にアクセスしたい middleware.tspublicRoutes/ を追加

✨ 感想:Copilotと話すだけで、複雑な認証フローも解決!

今回のケースでは、どこの部分で問題が起きているのかを説明することで簡単に問題を解決することができました。
一方で、どこの部分でどのような問題が起きているのかを細かく説明する必要性はまだあるので、一度お願いして細かく全てをチェックしてくれるようなお願いはまだできないことを考えるとAIに全ての開発はまだできないなと思いました。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?