如何在 NextJS 中将查询参数传递给重定向

Jan*_*Jan 6 server-side-rendering next.js

当用户尝试访问未经身份验证的页面时,我将用户重定向到登录页面。

然后我想向他们展示一条消息。

但我无法在重定向中传递参数。导致问题的原因是什么以及如何正确解决?

// PAGE NEEDS AUTH / REDIRECT TO LOGIN WITH MESSAGE
// application
import { GetServerSideProps } from 'next';
import SitePageProducts from '../../components/site/SitePageProducts';

import axios from 'axios';

import { getSession } from 'next-auth/react';
import url from '../../services/url';
import { ProductFields } from '../../lib/ebTypes';

function Page() {
    return <SitePageProducts />;
}

export default Page;

export const getServerSideProps: GetServerSideProps = async (context) => {

    const session = await getSession(context)
    if (session) {

        const products = await axios.get(`${process.env.NEXT_PUBLIC_API_URL}/products`, {
        }).then(res => {
            console.log('res :>> ', res);
            return res.data.products as ProductFields[]
        }).catch(err => console.log(err));

        console.log('products :>> ', products);
        return {
            props: {
                loading: true,
                token: session.user.token,
            }
        }
    } else {
        return {
            redirect: {
                permanent: false,
                destination: url.accountSignIn().href,
                props: { test: "Message from inside Redirect" }

            },

            props: {
                params: { message: "Message from inside props" },
                query: {
                    message: 'Message from inside props query'
                },
                message: 'Message from inside props root'
            },

        };
    }
}
Run Code Online (Sandbox Code Playgroud)
// LOGIN PAGE, SHOULD CONSUME AND SHOW MESSAGE WHY LOGIN IS NEEDED
import { GetServerSideProps } from 'next';
import AccountPageLogin from '../../components/account/AccountPageLogin';
import url from '../../services/url';
import { getSession } from "next-auth/react"

function Page(props: any) {
    return <AccountPageLogin {...props} />;
}

export default Page;

export const getServerSideProps: GetServerSideProps = async (ctx) => {
    // ALL CTX queries / props are empty????? 
    // CURRENT: query:{} --- EXPECTING: query: {message: "MY MESSAGE"}
    console.log('ctx accountpagelogin::: :>> ', ctx);
    const session = await getSession(ctx)

    if (session) {
        return {
            redirect: {
                destination: url.accountDashboard().href,
                permanent: false,
            },
        };
    }
    return {
        props: {},
    };
};

Run Code Online (Sandbox Code Playgroud)

Ben*_*der 0

我们找到了这样的解决方案

export async function getServerSideProps({ query, req }) {
   const queryParamString = new URLSearchParams(query).toString();
   return redirect(`${url}?${queryParamString}`);
}
Run Code Online (Sandbox Code Playgroud)