我正在使用zeit来创建一个具有反应的同构应用程序,并使用快速会话(在其他服务器)创建一个API来创建API。刷新页面时会话丢失(下一步,反应,同构)
该组件应该从API(request.get('http://0.0.0.0:3100/private'))请求隐私数据,并在用户登录时显示私人页面,如果没有,则显示私人页面。
在客户端这可以工作,但是当我刷新私人页面时,我被重定向到登录,因为客户端和服务器端的会话cookie是不同的。我怎么解决这个问题?
const Private = (props) => {
return (
<main>
<h1>Private </h1>
<Link href="/">
<a>Home</a>
</Link>
</main>
);
}
Private.getInitialProps = async ({ res }) => {
// getInitialProps is ejecuted in server side when you refresh the page (first time)
// but if you navigate in client side it is ejecuted in client. Server side and client
// have a different session for API calls. Is posible to share the session by client
// and server side?
const response = await request.get('http://someDomain/private');
let body;
if (response.status !== 401) {
body = await response.json();
} else {
if (res) {
res.writeHead(302, { Location: '/login' })
res.end()
} else {
Router.push('/login')
}
}
return {}
}
export default Private;
你的代码段不工作, –