搞定權限設計1-頁面按鈕控制(精確到某個用戶和某個按鈕)


每個系統都離不開權限控制,這里來說說頁面上控制到按鈕的思路,僅提供思路:

使用 角色 + 資源(菜單和菜單對應頁面上的按鈕)+ 授權的方式。

1  定義角色與用戶;

    假定這里我們只控制到角色這一層次,一個用戶一個角色,設計如下:

    角色表: role(role_id, role_name)

    用戶表: user(user_id, username, role_id),其中role_id是角色表的外鍵。

 

2  定義資源

    這里假定把菜單、按鈕都看成是一種資源,一個菜單上面有多個按鈕。

    菜單表: menu(menu_id, nemu_name, menu_url)

    按鈕表: operation(btn_id, btn_code, btn_name, btn_title, menu_id)  btn_title 為提示

按鈕表,其中menu_id 區分這個按鈕是屬於那一個頁面,btn_code 存這個按鈕在頁面上的組件ID,這個在一個頁面下應該是唯一的,方便后續頁面定位她。比如我的HTML頁面A,有一個按鈕 <input type='button' id='saveBtn' ......這里 btn_code 就存 saveBtn。

 

3 錄入資源

    錄入菜單與對應按鈕到菜單表和按鈕表,數據根據開發的頁面而來。

    假如我有2個頁面 

a.html (頁面有2個按鈕,保存 id: saveBtn,刪除 id: deleteBtn );

b.html (頁面有2個按鈕,新增 id: addBtn,提交 id: submitBtn );

    那么我錄入的數據應該是:

    菜單表:

(1,a頁面, /a.html)菜單ID假設是1

(2,b頁面, /b.html)菜單ID假設是2

    按鈕表:

 (1, saveBtn, 保存, 保存按鈕,1)

 (2, deleteBtn, 刪除, 刪除按鈕,1)

 (3, addBtn, 新增, 新增按鈕,2)

 (4, submitBtn, 提交, 提交按鈕,2)

 

4 設計授權表

    配置角色對資源的訪問權限,角色與資源多對多,設計如下:

    權限表: author(id, role_id, resource_id, resource_type)    注釋: id, 角色ID,資源ID, 資源類型(菜單還是按鈕)

 

5 錄入授權數據

    錄入角色與資源的權限關系,此時某個角色能夠訪問的資源數據已經有了,包括菜單和按鈕。

 

進入頁面控制:

    進入頁面之前,根據用戶拿到角色,根據當前訪問的菜單,拿到有權限的按鈕;

    頁面初始化完成后(比如jQuery.ready()),根據按鈕ID,有權限的按鈕顯示,沒權限的按鈕隱藏(所以之前按鈕要保存頁面的組件ID);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM