Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Menguruskan Pengesahan dalam 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="/" 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!