摘要:為用戶進行設置角色,登陸系統后,用戶可使用其擁有角色對應的所有菜單。負責后臺用戶的菜單授權。這里僅實現了菜單的隱藏,需要再編寫權限控制邏輯,使我們的系統更安全,但那是我們以后要考慮的事情。
問題描述
動態菜單管理,用戶對應角色,角色對應菜單。
為用戶進行設置角色,登陸系統后,用戶可使用其擁有角色對應的所有菜單。
功能實現很簡單,這里就不進行代碼的講解了,直接講一下我所實現的思路。
實現 原設計系統設置中,前臺菜單遵循如下格式:
menus: [ { text: "主導航", group: true, children: [ { text: "首頁", link: "/main", icon: "anticon anticon-compass" }, { text: "系統設置", link: "/setting", icon: "anticon anticon-setting" } ], } ]
所以最開始的思路也很簡單,后臺的Menu實體中存儲菜單所有相關的信息。
后臺直接就查出當前登錄用戶所有的菜單,前臺根據返回來的菜單數據構建前臺菜單。
問題能實現肯定是能實現,但我們進行設計時,考慮的不應僅僅是實現,考慮的更多的是我這么實現,效率高不高?以后好不好改?能不能被以后維護的人員快速理解?
斟酌之后,斷然拋棄了這種實現,因為,不能把所有的數據都放在后臺。
就拿icon字段來說,如果我們采用了上述實現:
那當我們以后想修改前臺菜單圖標的時候,需要去修改后臺的數據初始化。這顯然不合理,以后維護的人員肯定會存在一個疑問,這是誰設計的菜單?我改個前臺的圖標為什么要動后臺?
新設計既然不能講數據都放在后臺,那前后臺就各司其職。
前臺:包含菜單名稱,菜單圖標,菜單路由等信息。負責前臺菜單的格式顯示。
后臺:只保留,菜單名,菜單路由,父菜單三項信息。負責后臺用戶的菜單授權。
核心思想就是:前臺配置好所有的菜單,但默認將菜單隱藏。
應用啟動時,查詢后臺接口,獲取當前用戶的所有授權菜單,授權一個,前臺就顯示一個。
前臺菜單:寫菜單時將hide置為true,默認隱藏。
menus: [ { text: "主導航", group: true, children: [ { text: "首頁", link: "/main", hide: true, icon: "anticon anticon-compass" }, { text: "系統設置", link: "/setting", hide: true, icon: "anticon anticon-setting" } ] } ]
然后就是具體的邏輯,先獲取前臺的菜單,即所有菜單。
獲取當前用戶授權菜單列表,以路由表示該菜單唯一,如果路由被授權,就把hide置為false。
/** * 獲取所有被授權的菜單 */ getAllAuthMenu(): Observable總結> { // 獲取前臺菜單 const menus = AppConfig.menus as Array
先完成,再完美。這里僅實現了菜單的隱藏,需要再編寫權限控制邏輯,使我們的系統更安全,但那是我們以后要考慮的事情。現在先加個TODO。先把客戶想要的功能先實現了,至于你實現得如何,代碼如何,客戶統統不關心,我們在先滿足客戶對開發速度需求的前提下,以后再抽出時間將程序的某些功能完美。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73480.html
摘要:發布時我就想說那得喝一杯,這個版本的等待其實在社區里反應是有點忐忑,所以當跟我說來今天要發布時我說那晚上得喝一杯。當然,今天也算是個不錯的日子,也發布了正式版。發布沒多久,帶來了一些很酷的操作。希望真正做到讓開發者更加專注于業務。 ng-zorro-antd 0.7.0 發布時我就想說那得喝一杯,這個版本的等待其實在社區里反應是有點忐忑,所以當VTHINK跟我說來今天要發布 0.7 時...
摘要:很多人反應很難訪問,所以轉移到阿里云服務器上,因此做了一次完整的容器部署。在容器化過程中,我們并未配置任何等,只是保留服務所需的配置項而已,而這一部分我們可以放在反向代理層完成。 很多人反應很難訪問 Github Page,所以 ng-alain.com 轉移到阿里云服務器上,因此做了一次完整的 Angular 容器部署。 以下我會闡述 ng-alain 整個過程,其中包括 Docke...
摘要:很多人反應很難訪問,所以轉移到阿里云服務器上,因此做了一次完整的容器部署。在容器化過程中,我們并未配置任何等,只是保留服務所需的配置項而已,而這一部分我們可以放在反向代理層完成。 很多人反應很難訪問 Github Page,所以 ng-alain.com 轉移到阿里云服務器上,因此做了一次完整的 Angular 容器部署。 以下我會闡述 ng-alain 整個過程,其中包括 Docke...
摘要:項目中按鈕權限注冊全局自定義指令來完成的。如果對自定義指令不熟的話可以查閱官方文檔。相關文章鏈接從到搭建后臺框架打包優化從到搭建后臺框架優化篇 前言 首先還是謝謝各位童鞋的大大的贊贊,你們的支持是我前進的動力!上周寫了一篇從0到1搭建element后臺框架,很多童鞋留言提到權限問題,這一周就給大家補上。GitHub 一、jwt授權認證 現在大多數項目都是采用jwt授權認證,也就是我們所...
閱讀 661·2019-08-30 15:44
閱讀 1383·2019-08-30 11:02
閱讀 2987·2019-08-29 18:42
閱讀 3514·2019-08-29 16:16
閱讀 1723·2019-08-26 13:55
閱讀 1773·2019-08-26 13:45
閱讀 2388·2019-08-26 11:43
閱讀 3254·2019-08-26 10:32