vue 後台系統許可權管理

2021-09-24 07:53:55 字數 2567 閱讀 3066

最近在做乙個後台管理系統,一般的後台系統都有許可權管理這塊,下面我就分享下我實現許可權管理這塊的思路。

首先說下這個系統前端用到的技術棧,vue全家桶,element-ui,axios。首先,使用者的許可權是通過前端來進行配置的,那麼就需要乙個頁面去進行使用者的許可權配置。在使用者登入之後,通過請求後台查詢該使用者的許可權資訊,然後返回到前端。前端拿到許可權資訊之後,動態配置路由,再生成出對應的選單列表。

毋庸置疑,許可權是跟使用者掛鉤的。在使用者管理頁面,做乙個授權頁面。如下圖:

樹結構用的是element-ui裡面的樹形控制項。生成這個樹形選單的資料來源為前端配置好的預設的路由表。'icon'為選單對應的圖表,'index'為自定義的索引,用來配合這個樹形控制項生成許可權資訊。

export const homeroute = ;

export const routes = [

, ,]

}, ];複製**

首頁預設是所有使用者都能檢視的。當為改使用者勾選對應的選單後,則會生成乙個陣列,儲存著選中的選單列表,如:['1', '2-1', '3', '2', '2-2']。

我在main.js檔案做了如下配置:

var per = true;

router.beforeeach((to, from, next) => else );

} else

} else

} next();

});複製**

當頁面每次重新整理的時候(ps:定義per變數,就是為了防止每次進重新整理的時候去dispatch,而是在頁面重新整理的時候去觸發),去dispatch.狀態管理的**如下。首先拿到使用者許可權陣列,然後分成一級選單跟二級選單兩個陣列。對一級選單和預設的路由表進行遍歷,篩選出有許可權的路由表,再過濾掉一級路由裡沒有許可權的二級路由。

const state = ;

const getters = ;

const getters = ;

const actions = )

child.map(c => );

console.log(child);

let newparent = [...new set(oldparent)]; // 去重

let routeslist = [...new set(routes)]; // 去重

let parentarray = ;

// 生成一級選單

newparent.map(

item => , routesitem);

parentarray.push(it);}}

);}

);// 過濾掉一級選單下的二級選單

for (let pitem of parentarray)

homeroute.children = parentarray;

router.addroutes([homeroute]);

commit(types.perm_list, parentarray);

resolve(perm);

});});

}};const mutations =

};複製**

例如,當獲取到的使用者許可權為:['1', '2-1', '3'],那麼生成的路由為:

, 

]},

複製**

路由陣列都出來了,那麼生成選單就不在話下了。選單也是用到了element-ui的選單

"sidebar">

"sidebar-el-menu" :default-active="onroutes" :collapse="collapse" background-color="#324157" text-color="#bfcbd9" active-text-color="#20a0ff" unique-opened router>

"item in permlist">

"item.children">

"item.path" :key="item.path">

"title">

"item.icon">

"title">}

"subitem in item.children">

"subitem.children" :index="subitem.path" :key="subitem.path">

"title">}

"(threeitem,i) in subitem.children" :key="i" :index="threeitem.path">

}"subitem.path" :key="subitem.path">

}"item.path" :key="item.path">

"item.icon">

"title">}

複製**

生成的選單如下:

我在網上查閱到的後台許可權管理,都是跟角色掛鉤的,無法滿足我的需求,於是在反覆思考下想到了這樣的做法,有些不足的地方還需要繼續補充和完善。例如:目前在選單級別上,只是做了一二級選單,沒有**選單。在狀態管理生成新的路由的**片段感覺寫的有點繁瑣,有待優化。希望大家能提出意見。

Vue後台許可權管理

許可權是對特定資源的訪問許可,所謂許可權控制,也就是確保使用者只能訪問被分配的資源 而前端許可權總的來說是請求許可權 請求的發起可能有下面兩種形式觸發 總的來說 所有的請求發起都觸發自前端路由或試圖 所以我們可以從這兩個方面入手 對觸發許可權的源頭進行控制 最終要實現目標是 前端許可權控制可以分為 ...

Vue後台管理系統的按鈕許可權控制

摘要 最近需要在原有的後台管理系統中,需要給頁面中的所有按鈕進行許可權控制 實現的思路如下 方法一 1 獲取後台傳過來的按鈕許可權陣列,並將其儲存下來 2 寫乙個全域性的方法。判斷某個按鈕的許可權是否含在後台傳的按鈕許可權陣列中 3 頁面中在按鈕上寫v if進行控制 如下 後台的按鈕許可權資料模擬 ...

vue後台管理系統許可權控制思考與實踐

最近在開發管理系統時遇到了任何管理系統都會有的需求 許可權控制,之前也遇到過這種需求,但是架構不完善導致的各種問題使得後期維護非常麻煩,這一次的方案解決了之前的種種問題,現做一次記錄,當然這個架構後期可能會有坑,不過得一步一步的嘗試才能發現並解決問題。因為是單頁面應用,路由交給前端來控制,對於一些需...