搞定权限设计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);

posted @   d-w  阅读(1871)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示