網頁如果要設定權限,怎麼設計比較好?

火爆浪子
  • 2.8k

比如說上方有選單

報表
統計
文章
商品

管理員
編輯
會計

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

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

1.數據庫會怎麼設計呢
2.頁面怎麼擋比較有效率呢

有大神能指點一下嗎?

回复
阅读 2.8k
2 个回答
ezmo
  • 7k
✓ 已被采纳

根据你的场景设定,需要五张表

  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

有了上面四张表,在进入需要授权的每个页面前判断当前用户是否有权限

  1. 根据MemberRole表获得当前用户的所有role,进而获得所有可访问的page_url
  2. 当前页面的pageUrl若在上面返回的page_url中,则展示内容给用户。 否则提示用户没有访问权限。

这两步使用一个sql语句就可以完成。

若要更复杂的功能,比如管理员可以编辑A页面,其他用户只可以查看A页面,那么需要在RoleFunction表中添加一个字段 opeartion, 对应的值分别为 edit 和 view

RBAC权限设计了解一下

宣传栏