【发布时间】:2023-04-03 23:46:02
【问题描述】:
我开始构建一个 next.js 应用程序,我正在使用 redux。 我在 next.js 中阅读了很多关于身份验证的内容,特别是关于 redux 的内容。 假设我有一个 /login 页面和一个 /private 页面。 我的 redux 商店包含 isAuthenticated 状态。 所以,在我看来,我需要考虑以下场景:
当通过地址栏 (SSR) 导航到 /private 时,我应该重定向到 /login。
当已经在 /private 并且 isAuthenticated 更改为 false 时。
在/login登录成功后,更新isAuthenticated状态,重定向到/private页面。
我是否错过了一些重要的可能场景(用户体验和安全方面)?
关于这些案例,我有几个问题想请教专家:
对于场景 1,我在 getinitialprops 中实现了身份验证检查(仅当 ctx.req 不为空时)。如果用户未通过身份验证,我会使用 302 响应将他重定向到 /login 页面。可以吗?
关于场景 2,我应该在哪里实现这个逻辑?最佳做法是什么?我可以考虑在 getinitialprops、render() 函数、componentDidUpdate 中实现检查...
我应该在调用 redux 操作(身份验证)后重定向,还是在 redux 操作中重定向?
我应该从 redux 操作中还是在组件的句柄函数中触发登录请求,并在成功时调用 redux 操作。
重定向时,应该使用Router.push还是Router.replace?
请帮助我一劳永逸地了解最佳做法。
【问题讨论】:
标签: react-redux next.js redux-thunk