博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React-Router V3 如何进行页面权限管理
阅读量:6993 次
发布时间:2019-06-27

本文共 1483 字,大约阅读时间需要 4 分钟。

前言

在一个复杂的SAP应用中,我们可能需要根据用户的角色控制用户进行页面的权限,甚至在用户进入系统之前就进行权限的控制。本文就此一权限控制进行讨论。本文假设读者了解React和React-Router的相关使用。

从传统的Router开始

一个传统的路由大概长下边这个样式,这是没有添加任何权限限制的。

export default (store) => {    const history = syncHistoryWithStore(hashHistory, store);    return (        
{/*
*/}
)}

这里一共有3个页面 IndexPage, PhotoPage,InfoPage。

添加第一个权限

假设我们需要在用户进入PhotoPage之前需要验证用户是否有权限,根据store的的一个状态去判断。

先添加如下一个函数

const authRequired = (nextState, replace) => {        // Now you can access the store object here.        const state = store.getState();               if (state.admin != 1) {            replace('/');        }    };

函数里我们判断了state的admin是否等于1,否则跳转到首页。

然后在Route添加 onEnter={authRequired} 属性

通过以上,就完成了第一个权限的添加

进入系统之前就进行权限控制

如果需要在进入系统之前就进行权限控制,那么就需要改变一下策略。

比如上边的例子,加入state的admin并未加载,那么就需要在上一层的route进行数据加载

首先添加一个加载数据的函数

function loadData(nextState, replace, callback) {        let unsubscribe;        function onStateChanged() {            const state = store.getState();            if (state.admin) {                unsubscribe();                callback();            }        }        unsubscribe = store.subscribe(onStateChanged);        store.dispatch(actions.queryAdmin());    }

接着再修改一下Router

这样在进入下边之前,就会先进行数据加载。

通过以上简单几步,一个完整的权限控制链就完成了.

转载地址:http://vmdvl.baihongyu.com/

你可能感兴趣的文章
stl学习之模板
查看>>
【leetcode】Basic Calculator III
查看>>
[LeetCode] Surrounded Regions, Solution
查看>>
服务器使用bbr加速配置
查看>>
源码包安装
查看>>
读书笔记—CLR via C#章节4-7
查看>>
修改已经释放了的请求号
查看>>
logging ,re 模块
查看>>
Android ocr识别文字介绍(文字识别)
查看>>
24个很酷的 CSS3 文本效果示例及教程
查看>>
Win 7 XAmpp yii 环境配置
查看>>
基于Java的四大开源测试工具
查看>>
ASP.NET输出PNG图片时出现GDI+一般性错误的解决方法
查看>>
while(scanf("%d",&n)!=EOF)与while(cin>>n)
查看>>
JAVA-day08 下午-总结、測试
查看>>
[android开发之内容更新类APP]三、项目的基本功能之布局
查看>>
[ACM] ZOJ Martian Addition (20进制的两个大数相加)
查看>>
1.3 Quick Start中 Step 5: Start a consumer官网剖析(博主推荐)
查看>>
数据库服务器 之 Postgresql备份和恢复------SQL转储篇
查看>>
elasticsearch
查看>>