是否可以根据Cookie值有条件地将用户重定向到另一个Url?
我知道我可以检查服务器上的cookie和然后重定向。
但是,如果用户通过Link
,我该怎么办? (我不能使用Route.push,因为它在服务器上未定义)
有没有办法只在浏览器上使用路由器?
我至少知道一种方法:创建简单的button
并添加Router push&检查onClick
处理程序中的cookie,但这是一种正确的方法吗?
答案 0 :(得分:8)
您可以检查用户是否通过服务器或客户端访问了该页面。
之后,您可以使用适当的工具有条件地重定向。
getInitialProps
函数获取ctx
个对象。你可以检查它在服务器或客户端上是否像这样:
import Router from 'next/router'
export default class Browse extends Component {
static async getInitialProps (ctx) {
if (ctx && ctx.req) {
console.log('server side')
ctx.res.writeHead(302, {Location: `/`})
ctx.res.end()
} else {
console.log('client side')
Router.push(`/`)
}
...