鍍金池/ 問答/PHP  數(shù)據(jù)庫/ 網(wǎng)頁如果要設(shè)定權(quán)限,怎麼設(shè)計比較好?

網(wǎng)頁如果要設(shè)定權(quán)限,怎麼設(shè)計比較好?

比如說上方有選單

報表
統(tǒng)計
文章
商品

管理員
編輯
會計

這是每一個職稱的名字
每一個職稱能進入的頁面不同
比如說管理員可以進入以上四個頁面
編輯只能進文章跟商品
會計只能進報表跟統(tǒng)計

前提是管理員可以勾選每個職缺可進入哪些頁面

1.數(shù)據(jù)庫會怎麼設(shè)計呢
2.頁面怎麼擋比較有效率呢

有大神能指點一下嗎?

回答
編輯回答
避風(fēng)港

RBAC權(quán)限設(shè)計了解一下

2017年12月13日 17:03
編輯回答
孤島

根據(jù)你的場景設(shè)定,需要五張表

  1. Role - 定義角色名稱: 字段 id, name
  2. Function - 定義所有需要控制訪問的頁面 id, page_url, name -- page_url是相對路徑,加索引
  3. RoleFunction - 定義角色可以訪問的頁面 id, role_id, function_id
  4. Member - 定義人員,分配角色 id, name
  5. MemberRole - 給人員分配單個或多個角色 id, member_id, role_id

有了上面四張表,在進入需要授權(quán)的每個頁面前判斷當(dāng)前用戶是否有權(quán)限

  1. 根據(jù)MemberRole表獲得當(dāng)前用戶的所有role,進而獲得所有可訪問的page_url
  2. 當(dāng)前頁面的pageUrl若在上面返回的page_url中,則展示內(nèi)容給用戶。 否則提示用戶沒有訪問權(quán)限。

這兩步使用一個sql語句就可以完成。

若要更復(fù)雜的功能,比如管理員可以編輯A頁面,其他用戶只可以查看A頁面,那么需要在RoleFunction表中添加一個字段 opeartion, 對應(yīng)的值分別為 edit 和 view

2017年9月9日 02:39