Laravel Auth::user()がSSRでnullになる問題と対処法

問題

CSRの場合は、Auth::user()が正常に取得できるが、SSRの場合はnullになってしまう。

原因

SSRの場合、Cookieが送信されないため、セッション情報が取得できない。

対応

SSRの場合は、headersにCookieを設定することで、セッション情報を取得できる。

export async function getServerSideProps({req}: GetServerSidePropsContext) {
    const cookies = req.headers.cookie;

    const categories = await axios.get('/api/categories', {
        headers: {
            origin: `${process.env.NEXT_PUBLIC_FRONTEND_URL}`,
            Cookie: cookies,
        }
    });

    return {
        props: {
            categories: categories.data,
        }
    };
}

参考

https://laracasts.com/discuss/channels/laravel/laravel-sanctum-breeze-with-next-js