天天看點

權限系統就該這麼設計,穩的一批!

作者:愛做夢的程式員
對于背景管理系統來說,權限功能已經是必不可少的一部分了。如果你用過一些快速開發腳手架,你會發現很多都直接內建了權限功能。把權限功能做成一個通用功能,非常有利于代碼的複用。今天就以我的mall電商實戰項目為例,來聊聊權限系統的設計與實作!

mall項目簡介

這裡還是簡單介紹下mall項目吧,mall項目是一套基于 SpringBoot + Vue + uni-app 的電商系統,目前在Github已有60K的Star,包括前台商城項目和背景管理系統,能支援完整的訂單流程!涵蓋商品、訂單、購物車、權限、優惠券、會員等功能,功能很強大!

  • 項目位址:github.com/macrozheng/…
  • 學習文檔:www.macrozheng.com

功能設計

在開始開發權限子產品之前,我們先得把功能設計出來,可以出個效果圖,由于mall項目權限功能已經開發完畢了,這裡可以直接參考它的效果圖。

從系統效果圖可以看出,mall項目的權限功能共分為使用者管理、角色管理、資源管理、菜單管理四個功能,下面分别介紹下這些功能。

使用者管理

使用者管理主要包括使用者資訊的管理以及給使用者配置設定角色的功能。

權限系統就該這麼設計,穩的一批!

角色管理

角色管理主要包括角色資訊的管理、給角色配置設定菜單、給角色配置設定資源的功能。

權限系統就該這麼設計,穩的一批!

菜單管理

菜單管理主要包括菜單資訊的管理。

權限系統就該這麼設計,穩的一批!

資源管理

資源管理主要包括資源資訊以及資源分類的管理。

權限系統就該這麼設計,穩的一批!

功能整理

功能設計完畢之後,我們就需要對功能進行整理了,主要是要考慮對應的資料如何存儲,要設計哪些表和字段,可以使用思維導圖功能來整理,下面是我整理好的功能思維導圖。

權限系統就該這麼設計,穩的一批!

資料庫設計

接下來我們就可以根據整理好的思維導圖來設計資料庫表了,這是我設計好的mall項目權限子產品資料庫表結構。

權限系統就該這麼設計,穩的一批!

接口設計

做好這些準備我們就可以開始寫代碼來實作權限子產品功能了,我們可以對照系統的效果圖來設計接口,滿足系統的需求,比如mall項目的使用者管理功能接口設計如下。

權限系統就該這麼設計,穩的一批!

技術要點

其實在開發的過程中,我們還會涉及到一些權限架構的使用,比如我的mall項目中就使用到了SpringSecurity。

  • 為了實作認證和授權功能,項目中整合了SpringSecurity和JWT。
  • 為了使權限功能更加靈活通用,我們還會通過SpringSecurity實作接口的動态權限控制。
  • 為了提高系統的性能,我們還會使用Redis+AOP來優化權限管理功能。

總結

一個功能子產品的開發一般要經曆功能設計、功能整理、資料庫設計、接口設計等過程,同時也需要解決開發過程中的技術問題,大家隻要掌握它的通用設計思路,開發功能子產品也就不難了!

繼續閱讀