首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

带firebase身份验证检查的React路由器保护路由

要在React应用中使用Firebase身份验证检查来保护路由,您需要结合使用React Router和Firebase Auth

  1. 首先,确保您已经在项目中安装了react-router-domfirebase这两个库。如果没有,请使用以下命令安装:
代码语言:javascript
复制
npm install react-router-dom firebase
  1. 在项目中配置Firebase:
代码语言:javascript
复制
// src/firebase.js
import firebase from 'firebase/app';
import 'firebase/auth';

const firebaseConfig = {
  apiKey: "YOUR_API_KEY",
  authDomain: "YOUR_AUTH_DOMAIN",
  projectId: "YOUR_PROJECT_ID",
  storageBucket: "YOUR_STORAGE_BUCKET",
  messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
  appId: "YOUR_APP_ID"
};

firebase.initializeApp(firebaseConfig);

export const auth = firebase.auth();
  1. 创建一个受保护的路由组件,只有在用户登录时才允许访问:
代码语言:javascript
复制
// src/ProtectedRoute.js
import React from 'react';
import { Route, Redirect } from 'react-router-dom';
import { auth } from './firebase';

function ProtectedRoute({ component: Component, ...rest }) {
  return (
    <Route
      {...rest}
      render={(props) =>
        auth.currentUser ? (
          <Component {...props} />
        ) : (
          <Redirect to={{ pathname: '/login', state: { from: props.location } }} />
        )
      }
    />
  );
}

export default ProtectedRoute;
  1. 在您的路由配置中使用ProtectedRoute组件来保护需要身份验证的路由:
代码语言:javascript
复制
// src/App.js
import React from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import ProtectedRoute from './ProtectedRoute';
import Login from './Login';
import Home from './Home';
import Dashboard from './Dashboard';

function App() {
  return (
    <Router>
      <Switch>
        <Route path="/login" component={Login} />
        <ProtectedRoute path="/dashboard" component={Dashboard} />
        <Route path="/" exact component={Home} />
      </Switch>
    </Router>
  );
}

export default App;

现在,当用户尝试访问/dashboard路由时,如果用户未登录,将重定向到/login页面。在登录后,用户将被重定向回他们原来试图访问的页面。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券