React从react-router路由上做登陆验证控制的方法
程序员文章站
2022-05-05 11:49:14
本文介绍了react从react-router路由上做登陆验证控制的方法,分享给大家,具体如下:
验证代码
import react from 'react...
本文介绍了react从react-router路由上做登陆验证控制的方法,分享给大家,具体如下:
验证代码
import react from 'react' import {connect} from 'react-redux'; function requireauthentication(component) { // 组件有已登陆的模块 直接返回 (防止从新渲染) if (component.authenticatedcomponent) { return component.authenticatedcomponent } // 创建验证组件 class authenticatedcomponent extends react.component { static contexttypes = { router: react.proptypes.object.isrequired, } state = { login: true, } componentwillmount() { this.checkauth(); } componentwillreceiveprops(nextprops) { this.checkauth(); } checkauth() { // 判断登陆 const token = this.props.token; const login = token ? token.login : null; // 未登陆重定向到登陆页面 if (!login) { let redirect = this.props.location.pathname + this.props.location.search; this.context.router.push('/login?message=401&redirect_uri=' + encodeuricomponent(redirect)); return; } this.setstate({login}); } render() { if (this.state.login) { return <component {...this.props}/> } return '' } } // 不使用 react-redux 的话直接返回 // component.authenticatedcomponent = authenticatedcomponent // return component.authenticatedcomponent function mapstatetoprops(state) { return { token: state.token, }; } function mapdispatchtoprops(dispatch) { return {}; } component.authenticatedcomponent = connect(mapstatetoprops, mapdispatchtoprops)(authenticatedcomponent); return component.authenticatedcomponent }
路由上使用
<router history={browserhistory}> <route path="/admin" component={requireauthentication(admincomponent)} /> </router>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 人与人之间的距离有多大?
下一篇: 关于手纸的系列笑话锦集