最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

React从react-router路由上做登陆验证控制的方法

来源:懂视网 责编:小采 时间:2020-11-27 22:15:00
文档

React从react-router路由上做登陆验证控制的方法

React从react-router路由上做登陆验证控制的方法:本文介绍了React从react-router路由上做登陆验证控制的方法,分享给大家,具体如下: 验证代码 import React from 'react' import {connect} from 'react-redux'; function requireAuthentication(Component) {
推荐度:
导读React从react-router路由上做登陆验证控制的方法:本文介绍了React从react-router路由上做登陆验证控制的方法,分享给大家,具体如下: 验证代码 import React from 'react' import {connect} from 'react-redux'; function requireAuthentication(Component) {

本文介绍了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>

文档

React从react-router路由上做登陆验证控制的方法

React从react-router路由上做登陆验证控制的方法:本文介绍了React从react-router路由上做登陆验证控制的方法,分享给大家,具体如下: 验证代码 import React from 'react' import {connect} from 'react-redux'; function requireAuthentication(Component) {
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top