国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Alain 菜單權限控制

seanlook / 823人閱讀

摘要:為用戶進行設置角色,登陸系統后,用戶可使用其擁有角色對應的所有菜單。負責后臺用戶的菜單授權。這里僅實現了菜單的隱藏,需要再編寫權限控制邏輯,使我們的系統更安全,但那是我們以后要考慮的事情。

問題描述

動態菜單管理,用戶對應角色,角色對應菜單。

為用戶進行設置角色,登陸系統后,用戶可使用其擁有角色對應的所有菜單。

功能實現很簡單,這里就不進行代碼的講解了,直接講一下我所實現的思路。

實現 原設計

系統設置中,前臺菜單遵循如下格式:

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;
    return this.httpClient.get("/menu/allAuthMenu")
        .pipe(map((allAuthMenus: Array) => {
            // 對菜單進行處理
            menus.forEach((menu: Menu) => {
                menu.children.forEach((childMenu: Menu) => {
                    childMenu.hide = !WebAppMenuService.checkMenuAuthOrNot(childMenu, allAuthMenus);
                });
            });
            return menus;
        }));
}
總結
先完成,再完美。這里僅實現了菜單的隱藏,需要再編寫權限控制邏輯,使我們的系統更安全,但那是我們以后要考慮的事情。現在先加個TODO

先把客戶想要的功能先實現了,至于你實現得如何,代碼如何,客戶統統不關心,我們在先滿足客戶對開發速度需求的前提下,以后再抽出時間將程序的某些功能完美。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73480.html

相關文章

  • 發布 ng-alain 1.0.0 正式版

    摘要:發布時我就想說那得喝一杯,這個版本的等待其實在社區里反應是有點忐忑,所以當跟我說來今天要發布時我說那晚上得喝一杯。當然,今天也算是個不錯的日子,也發布了正式版。發布沒多久,帶來了一些很酷的操作。希望真正做到讓開發者更加專注于業務。 ng-zorro-antd 0.7.0 發布時我就想說那得喝一杯,這個版本的等待其實在社區里反應是有點忐忑,所以當VTHINK跟我說來今天要發布 0.7 時...

    dreamtecher 評論0 收藏0
  • Angular 容器部署

    摘要:很多人反應很難訪問,所以轉移到阿里云服務器上,因此做了一次完整的容器部署。在容器化過程中,我們并未配置任何等,只是保留服務所需的配置項而已,而這一部分我們可以放在反向代理層完成。 很多人反應很難訪問 Github Page,所以 ng-alain.com 轉移到阿里云服務器上,因此做了一次完整的 Angular 容器部署。 以下我會闡述 ng-alain 整個過程,其中包括 Docke...

    tracy 評論0 收藏0
  • Angular 容器部署

    摘要:很多人反應很難訪問,所以轉移到阿里云服務器上,因此做了一次完整的容器部署。在容器化過程中,我們并未配置任何等,只是保留服務所需的配置項而已,而這一部分我們可以放在反向代理層完成。 很多人反應很難訪問 Github Page,所以 ng-alain.com 轉移到阿里云服務器上,因此做了一次完整的 Angular 容器部署。 以下我會闡述 ng-alain 整個過程,其中包括 Docke...

    alighters 評論0 收藏0
  • 從0到1搭建element后臺框架之權限

    摘要:項目中按鈕權限注冊全局自定義指令來完成的。如果對自定義指令不熟的話可以查閱官方文檔。相關文章鏈接從到搭建后臺框架打包優化從到搭建后臺框架優化篇 前言 首先還是謝謝各位童鞋的大大的贊贊,你們的支持是我前進的動力!上周寫了一篇從0到1搭建element后臺框架,很多童鞋留言提到權限問題,這一周就給大家補上。GitHub 一、jwt授權認證 現在大多數項目都是采用jwt授權認證,也就是我們所...

    NervosNetwork 評論0 收藏0
  • vue權限管理系統

    摘要:權限系統后臺管理系統一般都會有權限模塊,用來控制用戶能訪問哪些頁面和哪些數據接口。大多數管理系統的頁面都長這樣。表為角色權限關聯表,一個角色擁有哪些權限是通過這張表查出來的。這樣就是一個賬號角色權限的關系。 vue權限系統 后臺管理系統一般都會有權限模塊,用來控制用戶能訪問哪些頁面和哪些數據接口。大多數管理系統的頁面都長這樣。 showImg(https://segmentfault...

    bovenson 評論0 收藏0

發表評論

0條評論

seanlook

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<