【发布时间】:2020-04-26 14:58:29
【问题描述】:
所以我正在使用 NextJS、Firebase 身份验证和 Express 开发一个应用,当用户注册或登录 Firebase 时,我会向我发送一个令牌,我可以使用该令牌验证用户并保护我的路由。
componentDidMount() {
const { setCurrentUser } = this.props;
this.unsubscribeFromAuth = auth.onAuthStateChanged(async userAuth => {
if (userAuth) {
const userRef = await createUserProfileDocument(userAuth);
this.setState({
currentUser: {
...userRef
}
});
const token = await auth.currentUser.getIdToken();
axios.defaults.headers.common['Authorization'] = token;
}
this.setState({ currentUser: userAuth });
});
}
现在每次获得该令牌时,我都会尝试将其添加到 Axios 的默认设置中,以便我可以访问这些路由,但我似乎无法这样做,因为此时 componentDidMount 方法甚至还没有运行。
我陷入了一个循环,似乎找不到一个很好的方法来传递令牌我尝试了 redux 之类的东西,即使那样我也做不到
Post.getInitialProps = async ({ store }) => {
// axios.defaults.headers.common['Authorization'] = token;
// const res = await axios.get('http://localhost:5000/api/posts/2');
// return { data: res.data };
};
使用 next 和 api 后端的人是如何做到的?我希望有一个很好的参考。
【问题讨论】: