0

基本的に、私は自分のプロジェクトで Next.js を使用しており、いくつかの問題が発生しています。

redux を使用するプロジェクトで認証を行っています。私のログインページには、真かどうかをチェックするif条件がありisAuthenticatedます(isAuthenticated私のreduxストアからのものです)。true の場合、次のルーターが行いrouter.push('/');ます。これは問題なく動作しますが、ホームページのページ ソースを表示すると、ログイン ページがソース ページとして表示されたままになります。どうしてこれなの?

また、同じくreduxからのユーザー認証をチェックするルート管理高次コンポーネントでホームページをラップしていますgetInitialProps. ここでも、ルーティングとすべてが正常に機能します。ソース ページにまだログイン ページが表示されているだけです。私は次が初めてなので、何が悪いのかわかりません。

ログインページからのリダイレクトです。

import Router from 'next/router';
// ...
if (isAuthenticated) {
    Router.push("/");
}

これがルートマネージャーです。

const isAuthenticated = store.getState().auth.isAuthenticated;

AuthPage.getInitialProps = async (ctx) => {
    if (routeType === "authenticator") {
        if (isAuthenticated) {
            if (typeof window === "undefined") {
                ctx.res.writeHead(302, { location: "/" });
                ctx.res.end();
            } else {
                const router = useRouter();
                router.push("/");
            }
        }
    } else if (routeType === "private") {
        if (!isAuthenticated) {
            if (typeof window === "undefined") {
                ctx.res.writeHead(302, { location: "/login" });
                ctx.res.end();
            } else {
                const router = useRouter();
                router.push("/login");
            }
        }
    }

    if (Component.getInitialProps) {
        const authProps = await Component.getInitialProps({
            ...ctx,
            auth: isAuthenticated,
        });
        return { ...authProps, isAuthenticated };
    }

    return { isAuthenticated };
};

return AuthPage;
4

0 に答える 0