react进入路由前获取数据_React从react-router路由上做登陆验证控制的方法-程序员宅基地

技术标签: 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

}

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

}

路由上使用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35955473/article/details/113522248

智能推荐

tableau:甘特图_甘特图 延期怎么样表示-程序员宅基地

文章浏览阅读1.2k次。案例:绘制交货延迟天数甘特图step1:把‘计划交货日期’拖到‘列’把‘供应商名称’和‘物资类别’拖到‘行’step2:把‘计划交货日期’改成‘天’,注意:选择的是第二个‘天’!!!改了之后就变成这个样子:step3:在‘度量’那里的空白处点击右键,选择‘创建计算字段’,然后创建一个‘延迟天数’的新字段,创建好之后点‘应用’、‘确定’。step4:把‘延迟天数’拖到‘大小’那里,之后就是这个样子图中蓝色长条的长度就反映了延迟天数的长短,但是有一个问题,有些商品是提前交货的,提_甘特图 延期怎么样表示

[提权] 使用 ShellCode 注入其他进程_shellcode 注入进程 执行-程序员宅基地

文章浏览阅读936次。背景如果将shellcode注入到具有特定权限的进程中,使用 ShellCode 创建的进程就可以获得与该进程相同的权限。本次使用的工具,依旧是上次编写的PETools:https://www.cnblogs.com/LyShark/p/12960816.html提权降权工具下载地址:https://www.blib.cn/soft/pexec.zip枚举系统进程,与进程权限令牌等。#include <stdio.h>#include <Windows.h>#inc_shellcode 注入进程 执行

超好用的几款可视化管理工具,你有吗?_服务器可视化管理工具x-程序员宅基地

文章浏览阅读1.2k次。1. 命令行不知道大家在日常操作redis时用什么可视化工具呢?以前总觉得没有什么太好的可视化工具,于是问了一个业内朋友。对方回:你还用可视化工具?直接命令行呀,redis提供了这么多命令,操作起来行云流水。用可视化工具觉得很low。命令行的鄙视用工具的,用高端工具的鄙视低端工具的,鄙视链一直存在。虽然用命令行自己也可以,但是总感觉效率上不如用工具,在视觉上不那么直观。尤其是看json的时候,在命令行就很不友好。大佬朋友说:谁说命令行就不能格式化json了?可以利用iredis,用|将redis..._服务器可视化管理工具x

百度地图集成_地图sensorm接口-程序员宅基地

文章浏览阅读331次。1.链接:http://lbsyun.baidu.com/index.php?title=androidsdk2.申请密钥:1.获取应用sha1:keytool -v -list -keystore keystore.jks,进入存在keystore的对应路径下并将文件名替换3.如果地图空白并且提示:AndroidManifest.xml的application中没有meta-_地图sensorm接口

CentOS6.8合并DVD1和DVD2作为本地yum源_centos6.8 yum 配置本地光盘源视频-程序员宅基地

文章浏览阅读882次。CentOS6.8合并DVD1和DVD2 下载链接:https://pan.baidu.com/s/1kti8zLbsiB45O6iBkrZ8CA 密码:7z1gCentOS一般都会提供DVD1和DVD2两个镜像文件,形如CentOS-6.8-x86_64-bin-DVD1.iso和CentOS-6.8-x86_64-bin-DVD2.iso,使用DVD1即可安装使用CentOS系统了,DVD..._centos6.8 yum 配置本地光盘源视频

MySQL——数据库调优整体策略_mysql数据库调优-程序员宅基地

文章浏览阅读3.8k次,点赞6次,收藏57次。文章目录MySQL——数据库调优整体策略1、数据库调优1.1、调优的目标1.2、确定调优的目标1.3、调优的维度和步骤2、MySQL服务器的优化2.1、优化服务器硬件2.2、优化MySQL服务的参数3、优化数据库结构3.1、拆分表:数据冷热分离3.2、增加中间表3.3、增加冗余字段3.4、优化数据类型3.5、优化插入记录的速度3.6、使用非空约束3.7、分析表3.8、检查表3.9、优化表4、大表优化4.1、限定查询范围4.2、读写分离4.3、垂直拆分4.4、水平拆分5、其它调优策略5.1、服务器语句超时处理_mysql数据库调优

随便推点

IBM AIX 5.3 系统管理 -- 磁盘存储管理二_gvg-012-程序员宅基地

文章浏览阅读7k次。 在安装操作系统时,缺省情况下会创建一个名为 rootvg 的卷组。使用一个或多个还未分配到其他卷组并且处于可用状态的物理卷,可以在系统上创建额外的卷组。所有物理卷都将划分为具有相同大小的物理分区。在创建卷组以后,物理分区的大小就不可更改。 IBM AIX 5.3 系统管理 -- 磁盘存储管理一 http://blog.csdn.net/tianlesoftware/archive/2011/0_gvg-012

排列数_1+c(n,2)+c(n,4)等于2的幂-程序员宅基地

文章浏览阅读1.5k次。do{}while(next_permutation(a+1,a+n+1));//a[]数组一定要是已经从小到大排序好的,才能遍历全排列排列组合常用公式:(1)证明 0!=1;(2)证明 C(n,m)=C(n,n-m);(3)证明 C(n+1,m)=C(n,m)+C(n,m-1);(4)证明 C(n,r)+C(n,r+1)=C(n+1,r+1);(5)证明 C(n,0..._1+c(n,2)+c(n,4)等于2的幂

mac下charles的基本配置_mac charles记录设置怎么填-程序员宅基地

文章浏览阅读695次。1、下载安装Charles,  2、安装好之后,、  3、打开菜单栏,选择“Proxy”,勾选“Starting Recording”和“Mac OS X Proxy”。  其中“Starting Recording”表示开始进行记录网络请求。  “Mac OS X Proxy”表示将系统代理设置通过此“Proxy”。  4、此时打开系统偏好设置,查看网络偏好设置。  点击高级,切换到“代理”,可..._mac charles记录设置怎么填

Java研发知识图谱_java用ltp提取文本关系并创建知识图谱-程序员宅基地

文章浏览阅读751次。不同行业不同公司不同岗位所用到的技术千差万别,所以该图谱不具有普适性。 该图谱基于笔者从业(电子商务/互联网金融后端)以来工作经验画出,具有一定的局限性,不过对于互联网行业Java研发知识体系具有一定的代表性。 该图谱目前只画出大概框架,各分支还有待完善及补充,后期也会不断更新。 ..._java用ltp提取文本关系并创建知识图谱

java中的多线程_class producer implements runnable{ int count=0; p-程序员宅基地

文章浏览阅读479次。在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。对于直接继承Thread的类来说,代码大致框架是:class 类名 extends Thread{方法1;方法2;…public void run(){// other code…}属性1;属性2;… }先看一个简单的例子:/** * @aut_class producer implements runnable{ int count=0; public void run(){ while(co

K8s(14)——kubernetes之kubernetes资源限制(CPU,内存,namespace限制)_kubernetes resource cpu limit-程序员宅基地

文章浏览阅读510次。文章目录1、内存限制2、CPU限制1、内存限制2、CPU限制_kubernetes resource cpu limit

推荐文章

热门文章

相关标签