亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

React-Router怎樣進行頁面權限管理

發布時間:2021-02-19 15:12:17 來源:億速云 閱讀:515 作者:小新 欄目:web開發

這篇文章將為大家詳細講解有關React-Router怎樣進行頁面權限管理,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

前言

在一個復雜的SAP應用中,我們可能需要根據用戶的角色控制用戶進行頁面的權限,甚至在用戶進入系統之前就進行權限的控制。本文就此一權限控制進行討論。本文假設讀者了解React和React-Router的相關使用。

從傳統的Router開始

一個傳統的路由大概長下邊這個樣式,這是沒有添加任何權限限制的。

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個頁面 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} 屬性

<Route path="photo" component={PhotoPage} 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

<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>

這樣在進入下邊之前,就會先進行數據加載。

通過以上簡單幾步,一個完整的權限控制鏈就完成了.

關于“React-Router怎樣進行頁面權限管理”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宣恩县| 高雄市| 炉霍县| 紫金县| 大竹县| 海淀区| 鄂托克旗| 东乌| 六枝特区| 随州市| 吉安市| 信丰县| 卓资县| 定边县| 南乐县| 河北省| 淮滨县| 姚安县| 冕宁县| 嘉定区| 江安县| 甘肃省| 奈曼旗| 天峨县| 西畴县| 内丘县| 武穴市| 嘉义县| 乌审旗| 遂昌县| 南京市| 苏尼特右旗| 黄山市| 卢龙县| 鄂伦春自治旗| 荔浦县| 连江县| 金寨县| 盖州市| 卓资县| 聂荣县|