在中後台管理專案中,許可權是重要的基礎功能。在專案架構初期,就要做好全面的設計。 傳統的基於url控制的後端許可權,在前端spa應用的前提下,已經不再合適。服務端並不能獲取到前端的路由跳轉。許可權這快,前端的邏輯將會更重。基於ant design pro2 ,umi2 的技術棧前提下,antd已經提供的一套相對完善的許可權方案。
許可權的維度我們希望控制到按鈕層,包括選單,包括路由。
antd的方案基於角色維度來進行。config設定當前路由的准入角色。許可權組建接受當前角色資訊,如此判斷渲染的內容。
如需對某些頁面進行許可權控制,只須在路由配置檔案 router.config.js 中設定 authority 屬性即可,代表該路由的准入許可權,pro 的路由系統中會預設包裹 authorized 進行判斷處理。缺陷:umi2中基於約定路由的形式。在路由初始化時不能動態配置config。及不能動態修改authority欄位。而且基於角色的許可權不能滿足我們的需求。我們希望精確到使用者的許可權配置。後端下發選單,路由以及按鈕list。
為解決該問題。我們在router.config.js新增code欄位。標記路由的唯一code。routes定義路由層的父級元件。在該元件中進行路由攔截,實現路由級別許可權控制。 // config.js
[
, ,
]複製**
// privateroute.js
if (route.code && menulist && menulist.indexof(route.code) == -1)
複製**
基於pro的選單方案進行了修改。直接動刀basiclayout.js,修改原先基於authority欄位的選單邏輯。改至code欄位。
路由表由前端提供,路由名稱,(包括路由,選單,以及按鈕型別)。後端存至服務端。再有對應的token下發對應的code list。
寫個高階元件封裝下button。 over
基於DOM物件 2
1.設定標籤中的文字內容 設定標籤中的文字內容,應該用textcontent屬性,谷歌,火狐支援,ie8不支援 設定標籤中的文字內容,應該用innercontent屬性,谷歌,火狐,ie8都支援 如果這個屬性在瀏覽器中不支援,那麼這個屬性的型別是undefined 相容 設定任意標籤中的任意文字內容...
基於異常的設計(2)
在stats 內部有4 條語句在try 塊之外,在下面兩條語句完成之前,可能會有異常被丟擲 1 int pstats new int 4 2 do something pstats 在語句 1 中,new 表示式可能會失敗,如果發生了這樣的情況,標準庫將產生bad alloc 標準異常,由於bad ...
基於物件的設計(2)
我們與潛在使用者的討論已經引起了極大的熱情,現在我們要真正實現它,但是怎樣把這 個設計轉換成c 呢?支援基於物件設計的類的一般形式如下 class classname public 公有操作集合 private 私有實現 這裡class public 和private 是c 語言的關鍵字。class...