如何使用Firebase身份验证来限制对next.js页面的访问?

我正在使用firebase的next.js应用程序上工作。我需要使用firebase身份验证程序包来限制对页面的访问。with-firebase-authentication示例不显示对多个页面的身份验证。

import React from 'react';
import Router from 'next/router';

import { firebase } from '../../firebase';
import * as routes from '../../constants/routes';

const withAuthorization = (needsAuthorization) => (Component) => {
  class WithAuthorization extends React.Component {
    componentDidMount() {
      firebase.auth.onAuthStateChanged(authUser => {
        if (!authUser && needsAuthorization) {
          Router.push(routes.SIGN_IN)
        }
      });
    }

    render() {
      return (
        <Component { ...this.props } />
      );
    }
  }

  return WithAuthorization;
}

export default withAuthorization;
Stafan2020/03/27 20:16:31

嗨经过一番研究在这里似乎有这样做的方法有两种。您可以使用“ 自定义”替换页面的初始化过程,以在其中包括身份验证-在这种情况下,您可以将身份验证状态作为prop传输到下一页-或针对每次加载的页面要求一个新的身份验证状态。