Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Menguruskan Pengesahan dalam React Router 4?

Bagaimana untuk Menguruskan Pengesahan dalam React Router 4?

Patricia Arquette
Patricia Arquetteasal
2024-10-22 23:08:29417semak imbas

How to Manage Authentication in React Router 4?

Menguruskan Pengesahan dalam React Router 4

Dalam React Router versi 4, pelaksanaan laluan yang disahkan memerlukan pendekatan yang berbeza berbanding versi sebelumnya.

Pendekatan Asal

Sebelum ini, anda boleh menggunakan berbilang komponen Laluan dengan kanak-kanak, tetapi ini kini tidak digalakkan.

<Route exact path="/&quot; component={Index} />
<Route path="/auth" component={UnauthenticatedWrapper}>
    <Route path="/auth/login" component={LoginBotBot} />
</Route>
<Route path="/domains" component={AuthenticatedWrapper}>
    <Route exact path="/domains" component={DomainsIndex} />
</Route>

Betul Pelaksanaan

Untuk melaksanakan laluan yang disahkan, satu pilihan ialah menggunakan komponen tersuai yang memanjangkan Laluan dan menyemak pengesahan sebelum memaparkan komponen.

import React, {PropTypes} from "react";
import {Route} from "react-router-dom";

export default class AuthenticatedRoute extends React.Component {
  render() {
    if (!this.props.isLoggedIn) {
      this.props.redirectToLogin()
      return null
    }
    return <Route {...this.props} />
  }
}

AuthenticatedRoute.propTypes = {
  isLoggedIn: PropTypes.bool.isRequired,
  component: PropTypes.element,
  redirectToLogin: PropTypes.func.isRequired
}

Pendekatan Alternatif

Pendekatan lain ialah menggunakan komponen Redirect, yang membolehkan anda mengubah hala pengguna berdasarkan sifat yang disahkan.

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

Anda kemudiannya boleh menggunakan komponen PrivateRoute dalam laluan anda:

<Route path='/' exact component={Home} />
<Route path='/login' component={Login} />
<Route path='/register' component={Register} />
<PrivateRoute authed={this.state.authed} path='/dashboard' component={Dashboard} />

Atas ialah kandungan terperinci Bagaimana untuk Menguruskan Pengesahan dalam React Router 4?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn