最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React-Router如何進(jìn)行頁(yè)面權(quán)限管理的方法

 更新時(shí)間:2017年12月06日 08:34:22   作者:seajean  
本篇文章主要介紹了React-Router如何進(jìn)行頁(yè)面權(quán)限管理的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧

前言

在一個(gè)復(fù)雜的SAP應(yīng)用中,我們可能需要根據(jù)用戶的角色控制用戶進(jìn)行頁(yè)面的權(quán)限,甚至在用戶進(jìn)入系統(tǒng)之前就進(jìn)行權(quán)限的控制。本文就此一權(quán)限控制進(jìn)行討論。本文假設(shè)讀者了解React和React-Router的相關(guān)使用。

從傳統(tǒng)的Router開始

一個(gè)傳統(tǒng)的路由大概長(zhǎng)下邊這個(gè)樣式,這是沒有添加任何權(quán)限限制的。

export default (store) => {
 const history = syncHistoryWithStore(hashHistory, store);
 return (
  <Router history={history}>
   <Route path="/" component={AppRoot} >
    <IndexRoute component={IndexPage} />
    <Route path="photo" component={PhotoPage} />
    <Route path="info" component={InfoPage} />
   </Route>
   {/* <Redirect path="*" to="/error" /> */}
  </Router>
 )
}

這里一共有3個(gè)頁(yè)面 IndexPage, PhotoPage,InfoPage。

添加第一個(gè)權(quán)限

假設(shè)我們需要在用戶進(jìn)入PhotoPage之前需要驗(yàn)證用戶是否有權(quán)限,根據(jù)store的的一個(gè)狀態(tài)去判斷。

先添加如下一個(gè)函數(shù)

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

函數(shù)里我們判斷了state的admin是否等于1,否則跳轉(zhuǎn)到首頁(yè)。

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

<Route path="photo" component={PhotoPage} onEnter={authRequired} />

通過以上,就完成了第一個(gè)權(quán)限的添加

進(jìn)入系統(tǒng)之前就進(jìn)行權(quán)限控制

如果需要在進(jìn)入系統(tǒng)之前就進(jìn)行權(quán)限控制,那么就需要改變一下策略。

比如上邊的例子,加入state的admin并未加載,那么就需要在上一層的route進(jìn)行數(shù)據(jù)加載

首先添加一個(gè)加載數(shù)據(jù)的函數(shù)

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

<Router history={history}>
   <Route path="/" component={AppRoot} onEnter={loadData}>
    <IndexRoute component={IndexPage} />
    <Route path="photo" component={PhotoPage} onEnter={authRequired} />
    <Route path="info" component={InfoPage} />
   </Route>  
  </Router>

這樣在進(jìn)入下邊之前,就會(huì)先進(jìn)行數(shù)據(jù)加載。

通過以上簡(jiǎn)單幾步,一個(gè)完整的權(quán)限控制鏈就完成了.

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用react-virtualized實(shí)現(xiàn)圖片動(dòng)態(tài)高度長(zhǎng)列表的問題

    使用react-virtualized實(shí)現(xiàn)圖片動(dòng)態(tài)高度長(zhǎng)列表的問題

    一般我們?cè)趯憆eact項(xiàng)目中,同時(shí)渲染很多dom節(jié)點(diǎn),會(huì)造成頁(yè)面卡頓, 空白的情況。為了解決這個(gè)問題,今天小編給大家分享一篇教程關(guān)于react-virtualized實(shí)現(xiàn)圖片動(dòng)態(tài)高度長(zhǎng)列表的問題,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • jenkins分環(huán)境部署vue/react項(xiàng)目的方法步驟

    jenkins分環(huán)境部署vue/react項(xiàng)目的方法步驟

    這篇文章主要介紹了jenkins分環(huán)境部署vue/react項(xiàng)目的方法,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • 采用React編寫小程序的Remax框架的編譯流程解析(推薦)

    采用React編寫小程序的Remax框架的編譯流程解析(推薦)

    這篇文章主要介紹了采用React編寫小程序的Remax框架的編譯流程解析(推薦),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • 十分鐘帶你快速了解React16新特性

    十分鐘帶你快速了解React16新特性

    這篇文章主要介紹了十分鐘帶你快速了解React16新特性,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-11-11
  • react native 獲取地理位置的方法示例

    react native 獲取地理位置的方法示例

    這篇文章主要介紹了react native 獲取地理位置的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-08-08
  • React?狀態(tài)管理工具優(yōu)劣勢(shì)示例分析

    React?狀態(tài)管理工具優(yōu)劣勢(shì)示例分析

    這篇文章主要為大家介紹了React?狀態(tài)管理工具優(yōu)劣勢(shì)示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • react自定義實(shí)現(xiàn)狀態(tài)管理詳解

    react自定義實(shí)現(xiàn)狀態(tài)管理詳解

    這篇文章主要為大家詳細(xì)介紹了react如何自定義實(shí)現(xiàn)狀態(tài)管理,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • React中useTransition鉤子函數(shù)的使用詳解

    React中useTransition鉤子函數(shù)的使用詳解

    React?18的推出標(biāo)志著React并發(fā)特性的正式到來(lái),其中useTransition鉤子函數(shù)是一個(gè)重要的新增功能,下面我們就來(lái)學(xué)習(xí)一下useTransition鉤子函數(shù)的具體使用吧
    2024-02-02
  • React18之狀態(tài)批處理的使用

    React18之狀態(tài)批處理的使用

    本文主要介紹了React18之狀態(tài)批處理的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • ahooks封裝cookie?localStorage?sessionStorage方法

    ahooks封裝cookie?localStorage?sessionStorage方法

    這篇文章主要為大家介紹了ahooks封裝cookie?localStorage?sessionStorage的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07

最新評(píng)論

大竹县| 扶风县| 邹平县| 安泽县| 丽江市| 辽宁省| 榕江县| 托克逊县| 栾城县| 玉山县| 准格尔旗| 长沙市| 凭祥市| 高雄市| 松桃| 图片| 丹寨县| 青岛市| 华池县| 江达县| 泉州市| 玛纳斯县| 开平市| 成武县| 邢台市| 临沂市| 石嘴山市| 桑日县| 北宁市| 襄垣县| 金寨县| 南充市| 溧水县| 双牌县| 东丰县| 聂拉木县| 梨树县| 连云港市| 盐亭县| 二手房| 临沂市|