[转]轻松搞定权限设计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);

ok 已经完成了,这里只给了思路,具体的要看自己的实现,这个很简单,也不知道有没有说清楚

题外话: 正常的开发里面,应该是页面做完之后,进入资源管理,录入菜单,按钮信息,然后再进行授权工作。

对于菜单,应该还有个功能页面之说,其不在菜单栏显示,作为一种服务,比如某个页面弹出的新页面,这个页面是不显示在菜单栏的,但是他和菜单又很像,暂且叫功能,上文为了简单没有说这个。

第一次写博客,完全不知所云,欢迎板砖,错误的地方恳请各位指正。

文章转载http://blog.csdn.net/chen42955/article/details/47423501

时间: 2024-07-28 20:18:15

[转]轻松搞定权限设计1-页面按钮控制(精确到某个用户和某个按钮)的相关文章

韩顺平_轻松搞定网页设计(html+css+javascript)_第34讲_js超级玛丽小游戏

韩顺平_轻松搞定网页设计(html+css+javascript)_第34讲_js超级玛丽小游戏_学习笔记_源代码图解_PPT文档整理 分类: PHP 2012-12-12 15:01 4256人阅读 评论(0) 收藏 举报 文西马龙:http://blog.csdn.net/wenximalong/ 采用面向对象思想设计超级马里奥游戏人物(示意图) 怎么用通过按键,来控制图片的位置 这个小游戏,用面向对象会很方便,不用面向对象会很麻烦很麻烦,比如以后要讲解的坦克大战的游戏,要是用纯的面向过程或

深入浅出 Python 装饰器:16 步轻松搞定 Python 装饰器

Python的装饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Design Pattern里的Decorator搞混了,其实这是完全不同的两个东西.虽然好像,他们要干的事都很相似--都是想要对一个已有的模块做一些"修饰工作",所谓修饰工作就是想给现有的模块加上一些小装饰(一些小功能,这些小功能可能好多模块都会用到),但又不让这个小装饰(小功能)侵入到原有的模块中的代码里去.但是OO的Decorator简直就是一场恶梦,不信你就去看看wikipedia上的词条

【转】轻松搞定FTP之FlashFxp全攻略

转载网址:http://www.newhua.com/2008/0603/39163.shtml 轻松搞定FTP之FlashFxp全攻略 导读: FlashFXP是一款功能强大的FXP/FTP软件,融合了一些其他优秀FTP软件的优点.如像CuteFTP一样可以比较文件夹,支持彩色文字显示:像BpFTP支持多文件夹选择文件,能够缓存文件夹:像LeapFTP一样的外观界面,甚至设计思路也比较相似,支持文件夹 (带子文件夹)的文件传送.删除:支持上传.下载及第三方文件续传:可以跳过指定的文件类型,只传

一行代码轻松搞定各种IE兼容问题,IE6,IE7,IE8,IE9,IE10

在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题? 百度源代码如下: 1 <!Doctype html> 2 <html xmlns=http://www.w3.org/1999/xhtml xmlns:bd=http://www.baidu.com/2010/xbdml> 3 <head> 4 <meta http-equiv=Content-Type content=

报表工具轻松搞定票据单据套打

实际项目开发中,很多情况会涉及到票据的打印.即在一张印刷好的空白票据上,准确无误地打印上票据的内容.用传统的报表工具,我们通常会用尺子量每一个数据区域的位置,然后在屏幕上根据尺子量出的尺寸设计每一个格子的位置,反复调试.不过,这样制作一张票据打印的报表费时费力,而且一旦票据格式发生变化,报表制作人员又要重新制作报表. 接下来,小编给大家介绍一款可以轻松搞定套打问题的爆款神器 - 润乾报表 (别问小编为什么这么热心 – 任性!!!),此神器采用底图描绘的方案来解决套打时报表绘制的问题.具体操作如下

报表工具轻松搞定卡片式报表

在我们日常生活或工作中,经常会看到这样一个个小卡片,上面记载着某件商品或者某个人的基本信息.如同名片一般,看起来简单明了.而在数据库中,这些信息实际上是密密麻麻的一条条记录,直接查看非常容易看错,如下图所示: 那么我们怎样才能够将这些信息以卡片形式,一条记录一张卡片的来呈现呢 ?下面,我们一起来看一下怎样利用报表神器-润乾报表,来简单轻松地生成这类报表: 首先(第一步),打开报表设计器,连接好数据源,新建一张空白报表,设置数据集,我们这里是用的SQL语句如下: SELECT 雇员.名字,雇员.雇

如何将CAD图纸转换成彩色,只需几步即可轻松搞定!

如何将CAD图纸转换成彩色,只需几步即可轻松搞定!在日常的工作中,建筑设计师们在编辑器完图纸后,基本图纸都是黑白的,这样不利用我们更好的进行查看,那就需要将CAD图纸的颜色进行转换,如何将CAD图纸转换成彩色,具体要怎么操作了?本篇教程就教教大家在迅捷CAD转换器中如何将CAD图纸转换成彩色只需几步的具体操作方法,想要了解的朋友就感觉来看看吧! 第一步:打开常用电脑,在电脑桌面中任意的打开一个浏览器,在浏览器的搜索框中搜索迅捷CAD转换器,然后鼠标点击进入官网,点击 下载安装最新版本的CAD转换

PPT如何压缩大小?只需两招轻松搞定

在工作中我们接触比较多的就是PPT了,自己美滋滋的做了一个很满意的PPT在保存的时候发现,这个PPT文件太大了,这样的话在发送的时候就很不方便了,可是自己辛苦半天的成果,不能这么浪费了,那么该怎么办呢?其实是可以对PPT压缩的,这样的话就能够使用啦,那么PPT如何踏实大小?压缩了的PPT大小又不影响美观和具体的效果呢?想知道的话就一起来看看下面的文章吧,只需两招轻松搞定哦.方法一:PPT直接压缩操作步骤:一.首先是打开我们需要压缩的PPT文件,单击"文件"按钮.二.打开之后,我们点击&

轻松搞定javascript预解析机制(搞定后,一切有关变态面试题都是浮云~~)

hey,guys!我们一起总结一下JS预解析吧! 首先,我们得搞清楚JS预解析和JS逐行执行的关系.其实它们两并不冲突,一个例子轻松理解它们的关系: 你去酒店吃饭,吃饭前你得看下菜谱,点下菜(JS预解析),但吃的时候还是一口一口的吃(JS逐行执行)! OK,解决下面五个问题,JS预解析就算过了~~(前提:对JS变量作用域有清晰理解) 一.JS预解析是什么? 其实就是对程序要用到的材料(变量,函数)给一个初始值,并存到一个表中(我自己虚构的),当程序运行到那一行时,就来这个表看有没有初始值,没有就