1 回答

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
大體思路就是維護(hù)一個(gè)全局的權(quán)限配置對(duì)象和與之對(duì)應(yīng)的鑒權(quán)系統(tǒng)。這兩個(gè)東西分別解決你需要中的2和1。
權(quán)限配置對(duì)象可以實(shí)現(xiàn)在$rootScope上,或者構(gòu)造一個(gè)專門的service來維護(hù)它,如果是多個(gè)模塊的權(quán)限,可能需要構(gòu)造為factory。有了全局對(duì)象,那么對(duì)于頁(yè)面元素的隱藏和操作相關(guān)的邏輯,都使用全局對(duì)象的具體屬性來控制。
鑒權(quán)系統(tǒng)的話,其實(shí)就是一系列映射關(guān)系的解析,既然你是針對(duì)路由的跳轉(zhuǎn)控制,那么這個(gè)鑒權(quán)系統(tǒng)會(huì)涉及兩方面的控制:
未進(jìn)入需要進(jìn)行鑒權(quán)的頁(yè)面的跳轉(zhuǎn)控制
已經(jīng)入需要進(jìn)行鑒權(quán)的頁(yè)面的跳轉(zhuǎn)控制
針對(duì)第一種情況,可以在router的跳轉(zhuǎn)事件hook中進(jìn)行鑒權(quán),之后根據(jù)鑒權(quán)結(jié)果,來決定是否跳轉(zhuǎn)到當(dāng)前目標(biāo)路由。
針對(duì)第二種情況,如果是需要實(shí)時(shí)控制,可能需要移植socket相關(guān)的東西來支持,如果不需要實(shí)時(shí)控制,則與第一種情況類似,只不過是在跳轉(zhuǎn)事件hook中對(duì)當(dāng)前的路由進(jìn)行鑒權(quán)而已。
添加回答
舉報(bào)