直接進(jìn)入正題,總得分為兩塊,一塊是表結(jié)構(gòu),另一塊為實現(xiàn)思路(僅供參考)
一、 表結(jié)構(gòu)
1、 菜單表(right)
字段 類型 注釋
id long 主鍵
name varchar 名稱
url varchar 地址
ico varchar 圖標(biāo)
tips varchar 提示信息
parentId long 上級菜單Id
level int 級別:1-3為菜單,4為按鈕,5為接口
sort int 排序
2、 角色表(role)
字段 類型 注釋
id long 主鍵
name varchar 名稱
desc varchar 描述
code varchar 編碼
sort int 排序
3、 角色菜單表(role_right)
字段 類型 注釋
id long 主鍵
roleId long 角色I(xiàn)D
rightId long 菜單ID
4、 用戶表(user)
字段 類型 注釋
id long 主鍵
name varchar 姓名
account varchar 賬號
password varchar 密碼
5、 用戶角色表(user_role)
字段 類型 注釋
id long 主鍵
userId long 用戶Id
roleId long 角色I(xiàn)d
5、 用戶登陸記錄表(login_token),過期時間由系統(tǒng)檢測
字段 類型 注釋
id long 主鍵
date date 登陸日期
token varchar token
userId long 用戶Id
二、 實現(xiàn)思路
1、前端
用戶登錄,返回token;
根據(jù)token查詢用戶菜單信息,并返回json數(shù)據(jù),存入客戶端;
根據(jù)菜單數(shù)據(jù),動態(tài)顯示菜單,按鈕
前端跳轉(zhuǎn)頁面,需要在路由中加入前端攔截,讀取本地權(quán)限數(shù)據(jù)進(jìn)行匹配
用戶訪問接口,后端進(jìn)行校驗
2、后端
編寫攔截器,攔截所有url,過濾掉特殊不需要攔截的url;
獲取請求中的接口地址,不包含參數(shù);
獲取當(dāng)前請求token,查詢用戶角色;
根據(jù)角色查詢所有的接口,拿當(dāng)前請求的接口進(jìn)行比對,存在則放行,不存在,則返回錯誤信息
以上僅為個人設(shè)計思路,如有不好的地方,歡迎指正。