はじめに
Next.jsでsupabaseのAuthを使っている中で沼った箇所を書いていきます
問題
ドキュメント通りに設定をして、アプリケーション開発を行っていたところとあるタイミングで以下の認可のコードでユーザーが取得できなくなりました
const { data, error } = await supabase.auth.getUser();
if (error || !data?.user) {
redirect("/login");
}
さっきまでユーザーが取れていたのにとナゾになっていました
解決方法
middleware.tsのimportがNextResponseよりも手前になっていたのが原因でした
これは動かない
import { updateSession } from "@/utils/supabase/middleware";
import { type NextRequest } from "next/server";
これならうごく
import { type NextRequest } from "next/server";
import { updateSession } from "@/utils/supabase/middleware";
最初に検証のときにはうまく設定しており、次にアプリケーション設定をしたときにミスをしていました
最初成功していたのでセッションがずっと効いていたようでログアウトをしたあとから、middleware.tsの位置がおかしいのでセッションをセットすることができなくなっていました
おわりに
突然起きてしまい数時間を使ってしまいましたがmiddlewareについて理解をふかめられましt