最新文章專題視頻專題問答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
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

React-Router如何進行頁面權限管理的方法

來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:24:10
文檔

React-Router如何進行頁面權限管理的方法

React-Router如何進行頁面權限管理的方法:前言 在一個復雜的SAP應用中,我們可能需要根據(jù)用戶的角色控制用戶進行頁面的權限,甚至在用戶進入系統(tǒng)之前就進行權限的控制。本文就此一權限控制進行討論。本文假設讀者了解React和React-Router的相關使用。 從傳統(tǒng)的Router開始 一個傳統(tǒng)的路由大概長下邊這
推薦度:
導讀React-Router如何進行頁面權限管理的方法:前言 在一個復雜的SAP應用中,我們可能需要根據(jù)用戶的角色控制用戶進行頁面的權限,甚至在用戶進入系統(tǒng)之前就進行權限的控制。本文就此一權限控制進行討論。本文假設讀者了解React和React-Router的相關使用。 從傳統(tǒng)的Router開始 一個傳統(tǒng)的路由大概長下邊這

前言

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

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

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

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之前需要驗證用戶是否有權限,根據(jù)store的的一個狀態(tài)去判斷。

先添加如下一個函數(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)到首頁。

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

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

通過以上,就完成了第一個權限的添加

進入系統(tǒng)之前就進行權限控制

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

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

首先添加一個加載數(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>

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

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

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

React-Router如何進行頁面權限管理的方法

React-Router如何進行頁面權限管理的方法:前言 在一個復雜的SAP應用中,我們可能需要根據(jù)用戶的角色控制用戶進行頁面的權限,甚至在用戶進入系統(tǒng)之前就進行權限的控制。本文就此一權限控制進行討論。本文假設讀者了解React和React-Router的相關使用。 從傳統(tǒng)的Router開始 一個傳統(tǒng)的路由大概長下邊這
推薦度:
標簽: 方法 如何 權限
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top