你需要来自trustedinstaller的权限才能删除_前后端分离后的权限控制设计方案
系統為后臺管理系統,包含了用戶創建、用戶登錄、用戶管理自己的資源。用戶經常會新增、刪除,也可以根據工作情況隨時調整頁面、功能權限,所以采用用戶-角色-頁面權限方案實現。
為什么不行:
根據前端路由表顯示左側菜單,但vue-router的路由表主要為了組織代碼,經常我們所需要的菜單并非一致。比如某個前端路由a子路由有b、c,但菜單中我們想要直接一級菜單就顯示b、c或者將b、c各放到其他菜單下。所以這種非常不靈活。
一個路由是菜單還是頁面?是否需要顯示到菜單中?是否驗證權限?哪個角色或者用戶擁有權限?這些都需要寫到前端路由里面,一旦有任何權限變動就要大量調整代碼。
如果權限寫死在前端,那么角色或者用戶必須已知且固定不變。比如頁面1的meta增加屬性標識可訪問的角色為a和b
一個頁面即一個前端頁面,比如首頁、用戶管理頁、資源管理頁等。
基本思路為:前端路由保持不變,數據庫存儲菜單結構、頁面權限控制(可以直接做成一個頁面來方便管理)等,前端根據數據庫中的菜單結構和權限信息來渲染一個菜單出來并只顯示其有權限的菜單,并在路由守衛中進行權限控制防止手動輸入path越權打開頁面。
部分功能有事需要單獨控制權限,比如用戶管理頁面可能允許多個角色查看,但是其中的“創建用戶”功能只允許某一個角色使用,那么僅僅使用頁面權限是不夠。所以需要細粒度的功能權限控制。
網上的方案都是說:根據資源控制增、刪、改、查等等,比如針對用戶就是用戶的創建、修改、刪除、查詢等。但是在我的實際使用中發現并不切合實際,最起碼對像我這種管理后臺,資源并不單純的增刪改查,可能有其他地方的其他操作中也會對此用戶資源造成影響,比如禁用、刪除角色也要禁用、刪除用戶,那么這個權限到底屬于角色的權限還是屬于用戶的權限,或者后臺又改了,角色又影響了其他資源或者不再對用戶進行操作,都會影響權限控制。所以更合理的方法應該為將每個功能單獨進行控制并和頁面進行關聯,且不限定必須是增、刪、改、查四種,可以任意定制,只需要與前后端開發約定一個唯一的標識即可。如上的例子中,用戶管理頁面下有用戶各種功能,角色管理頁面中也有個角色禁用、刪除功能,可以分別定義標識為role_disable、role_delete,如果擁有role_delete權限即可,即使沒有user_delete權限,也可以直接刪除用戶,否則就不要給其role_delete權限。用戶登錄后,從數據庫獲取其所擁有的的權限列表并存入vuex,包含頁面和功能對應關系,例如頁面name為user:{user: ['user_delete', 'user_query']},頁面中根據刪除按鈕可以v-if="hasPermission('user_delete')"判斷即可。頁面功能管理:獲取用戶擁有的權限:
角色一個角色類似于一個身份或崗位,每個角色有自己的權限范圍。一個角色可以擁有多個頁面權限。
一個角色可以擁有多個功能權限。
方案:
來源:www.yuque.com/zhanghaofei/blog/xrpz9p
公眾號后臺回復【2T】有驚喜禮包!
猜你喜歡1、GitHub 標星 3.2w!史上最全技術人員面試手冊!FackBoo發起和總結
2、如何才能成為優秀的架構師?
3、從零開始搭建創業公司后臺技術棧
4、程序員一般可以從什么平臺接私活?
5、37歲程序員被裁,120天沒找到工作,無奈去小公司,結果懵了...
6、滴滴業務中臺構建實踐,首次曝光
7、不認命,從10年流水線工人,到谷歌上班的程序媛,一位湖南妹子的勵志故事
8、15張圖看懂瞎忙和高效的區別!
總結
以上是生活随笔為你收集整理的你需要来自trustedinstaller的权限才能删除_前后端分离后的权限控制设计方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker 启动容器_crontab入
- 下一篇: b+树时间复杂度_阿里面试,问了B+树,