前言
最近一直在忙著一個用vue來做的權限管理的項目,其實在此之前,我也研究過vue的權限如何實現,并且也為之寫過一篇博客,但當真正應用在項目中的時候,還是發現了許多問題,所以此篇也會就著我在項目中遇到的一些問題,拿出來和大家分享一下,當然示例代碼還是我的github倉庫中的ant-design-vue-ms (本地下載)。
權限問題解決思路
對于一個前后端分離的項目而言,權限不再是僅僅靠后端來控制,后端只能控制接口的權限,前臺的頁面顯示還是需要我們來控制,針對vue的項目,首先我想的是當權限不多,并且都是單個權限的情況下,我們完全沒有必要使用vue中提供的addRoutes的方法,可以使用動態組件來做,即我們根據后端返回的角色,來細度控制動態組件的顯示內容,所謂動態組件其實就是vue內置提供的component組件
<component :is="currentComponent"/>
相信看到這里,熟悉的同學應該已經想起來了,這樣的話,我們就不需要用到vuex,以及路由配置等等復雜的問題,單純靠后臺返回的角色名稱就能解決所有的問題了,看到這里是不是覺得今天的內容就這些了,別著急,下面還有“好看的”。
權限設置中的問題
這樣雖然能解決一些簡單權限的問題,但是針對稍微復雜一些的權限應用,就顯得有些力不從心了,當角色過多,并且還包含了混合角色的權限的話,則會衍生出很多問題,這里也是列舉我遇到的一些問題,同學們可以細細推敲一下。
如果是混合角色的話,動態組件的路由跳轉實際都是跳轉到一個頁面,但是混合角色肯定會一個頁面中跳到不同角色的頁面,這樣可能我們要多寫很多層的判斷,權限混合越多,就越難以去判斷。 動態組件擴展性比較差,如果我們再添加一個權限呢,就要再多加一個動態組件的內容,并且出現混合權限的話,那改動的地方就更多了所以綜上所述,最終我還是選擇了傳統的addRoutes,那么肯定會有同學問了,既然這個方案不行,那干嘛還要用呢。問得好,其實動態組件就是一種嘗試,只有知道錯了,不滿足需求了,我們才能更知道為什么會去使用傳統的addRoutes的權限方案。
權限問題解決方法
所以我們來看看addRoutes帶來的一些“好處”:
一次配置,多處使用,我們配置好了動態路由以后,不論后期添加多少權限,都能很好的顯示路由跳轉等等,并且也不需要改動代碼,只需要添加新增角色的模塊就可以了。 遇到混合角色的問題,如果內容布局類似的話,我們可以使用自定義指令來區分要顯示的模塊,這樣的話如果一個賬號同時擁有很多角色的話,那么包含這個角色的模塊則會相應的顯示出來,就不會出現需要判斷究竟顯示哪個模塊了,也不需要單獨為某個角色去設置一個頁面來顯示了。新聞熱點
疑難解答
圖片精選