ฉันกำลังพยายามสร้างแอปพลิเคชัน Next JS ที่จัดการการรับรองความถูกต้องและการกำหนดเส้นทางเริ่มต้นภายใน getInitialProps ฉันค้นพบวิธีการนี้สามารถดำเนินการได้ทั้งในเซิร์ฟเวอร์หรือบนไคลเอนต์ แนวทางของฉันจนถึงตอนนี้คือการมีตัวจัดการ 2 ตัวที่แตกต่างกันโดยขึ้นอยู่กับการตรวจจับว่าฉันกำลังดำเนินการในเซิร์ฟเวอร์หรือไม่ โดยตรวจสอบว่ามีแอตทริบิวต์ req ภายใน ctx หรือไม่ นี่เป็นการหลอกลวง แต่ไม่รู้สึกว่าเป็นวิธีที่ถูกต้อง ใครช่วยบอกฉันทีว่ามีวิธีที่สะอาดกว่านี้หรือไม่ การรับรองความถูกต้องทั้งหมดได้รับการจัดการในโดเมนย่อยแยกต่างหาก ดังนั้นฉันเพียงแค่ต้องเปลี่ยนเส้นทางไปยังโดเมนย่อยการรับรองความถูกต้อง หากไม่มีคุกกี้หรือคำขอการรับรองความถูกต้องล้มเหลวด้วยเหตุผลอื่นบางประการ
import "../../styles/globals.css";
function MyApp({ Component, pageProps }) {
return <Component {...pageProps} />;
}
MyApp.getInitialProps = async (appContext) => {
let cookie, user;
let ctx = appContext.ctx;
//Check if I am in the server.
if (ctx.req) {
cookie = ctx.req.headers.cookie
//Do auth request.
//Redirect base on user properties
// handle redirects using res object
ctx.res.writeHead(302, { Location: "/crear-cuenta"});
} else {
cookie = window.document.cookie;
//Do auth request.
//Redirect base on user properties
//Do redirects using client side methods (useRouter hook, location.replace)???
}
//Return pageProps to the page with the authenticted user information.
return { pageProps: { user: user } };
};
export default MyApp;