我的网站后台管理系统 - 权限系统的设计

news/2024/5/20 23:22:32/文章来源:https://blog.csdn.net/weixin_34128411/article/details/94596254
直入正题,本文只谈思路,不谈具体代码及实现
以目前我所遇到的权限需求,以及本人肤浅的见识,研究结果如下:
后台的权限控制大概分为两类
1. 我能干什么
2. 我能干哪些
我能干什么,决定了我能做的操作是什么;我能干哪些,决定着在我有权做的情况下,我能对哪些对象进行操作。
俗点的意思:你可以吃饭,但你不可以吃你旁边小朋友的,(这种情况是两类权限的交集)
分别阐述:
1. 能干什么:
在Web开发中,和服务器交互无非是 Post/Get 方法,以Get方法为例,我们在开发一个后台应用的时候,往往一个操作,就是一个URL(地址)。例子:PicManage?action=del&id=3,5,9  。 其实Post方法也一样,只不过url里看不见而已。
一个人有没有这个操作权限,实际上就是看他有没有访问这个地址的权限。
特定地址+特定参数 = 干什么
在.net里所有都是请求,参数是包含在请求当中的,那就是 请求 = 干什么
于是,按照这种思路,我们需要一个数据表,来专门保存:后台所有的操作和对应参数
我们可以称之为 [行为注册表]
例:      操作名称:删除图片
请求页面/参数:    p=picManage && action=del
有此权限的用户:  5,8,12,18      (管理员ID列表)
有此权限的组:     1,4,5      (组ID列表)
[其它必要字段.....]:....
在行为注册表里注册过的所有操作行为,都受到权限检测程序的控制。
权限检测程序要在所有业务代码运行之前运行。换言之,所有业务代码前,都要调用此程序。
在验证的时候,将[行为注册表] 里注册的行为,与用户提交的 请求(访问地址/参数) 进行比对,当有匹配项的时候,再去看这个用户和他所在的组,有没有权限,于是就..........。  当用户提交的请求(访问地址/参数) 在 [行为注册表] 里没有注匹配项,或者说没有注册,那就是 [未知行为] ,可根据实际开发需求,中断或放行。
这样做有几个好处,
1.开发后台应用的时候,可以暂不去考虑权限问题,等开完测试完成后,再将特定行为加到 [行为注册表] 中,不会影响应用的开发思路;
2.所有操作行为,集中保存,集中管理,集中验证;
3. 根据实际需求的不同,可以配置出任意粒度的操作权限,可粗可细,咋整都行,且不用修改任何业务代码;
N. .....................。
由此,“能干什么”问题解决
2. 能干哪些
这块的实现,就必须要在业务代码里控制了(“1.能做什么” 的权限控制,是不需要修改业务代码的)
为什么呢?: 你可以吃饭(已解决),但你不可以吃你旁边小朋友的  ,于是每份餐上要有所属人的标识,这就必须深入到业务中了。
就是说,所操作的对象或数据,要有所属人的标识,才能实现。
于是,设计数据表时,例:
[客户登记表:由销售人员录入,销售人员只能看到自己的客户资料(防止抢单),销售主管可以看到所有的客户资料]
ID      姓名      详细资料      销售人员(录入人)ID
用登录的销售人员ID,与录入人ID进行比对,就可实现 :销售人员只能看到自己的客户资料
要实现:销售主管可以看到所有的客户资料  ,就需要引用一个级别的概念
我们可以之为 [角色级别]
实现起来也不复杂,可以采用一个无限级分类的结构,实现级别关系,例子:
通过上边的图片,可以看到,张三即是销售经理,同时也兼任销售2组组长。
张三有权管理的人是:张三他自己、李四、王五、赵六、陈七、刘八
李四(1组组长)呢:李四他自己、王五、赵六
赵六呢:只有他自己
其它以此类推.....
这个逻辑是成立的,代码实现就很容易了,不说了。
验证的时候,由登录人员的ID,找到他所在角色级别以下所有人员的ID,就可以对实现上述的需求了。
例:select xxx from Client where 录入人ID in (他 和他所在角色级别以下所有人员的ID)
这就成了!!!
你可以吃饭,但你不可以吃你旁边小朋友的(班长谁的都可以吃)。
通过以上两类权限 (能干什么/能干哪些) 进行交集控制(同时使用) 即可,
由此,需求解决!!!
本人一直做ASP方面的开发,没有很多现成的东西可以用,所以只能自己摸索,以上内容仅为自己的一点思路,
内容肤浅,文笔粗糙,欢迎拍砖!

转载于:https://www.cnblogs.com/BugLiu/archive/2009/07/03/1516215.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_822320.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站重构之配置文件分解

最近赶上公司重构网站,架构组的同事为提高web部门的开发效率,总结出了一些不错的经验,本人也是直接受益者,为此用下面几篇文章来与大家分享。 这一篇,我想讨论的是网站配置文件问题。说到配置文件,我第一印象就是它的灵活性&#…

springboot创建一个新的项目(通过spring官方网站)

本文主要介绍如何通过spring官方网站创建一个spring boot的项目。 好,下面上货。 1、首先进入spring的网站https://start.spring.io/这个是一个偏向简洁默认的一个方式,也可以点击“switch to the full version”,那样能够看到所有配置的选项…

IronPython 个人网站样例----宝藏挖掘

IronPython for ASP.NET 的 CTP 已经发布两个多星期了,惭愧的是,因为工作繁忙,一直没有太多时间来学习。居然忽略了 Personal Web Site Starter Kit 的 IronPython 样例。幸亏了 Scott Guthrie 这篇博客:http://blog.joycode.com/scottgu/arc…

35个富有启发和美丽的红色网站案例

网站设计是设计师的具有挑战性的任务。,他们设计的网站,即他们应该选择什么颜色风格来进行网站设计,这是每一个网站设计最重要的部分。颜色总是定义您的网站的性质。 有各种颜色的网站,如蓝色,绿色,灰色&am…

AX 2012 安装EP时提示网站模板“AXSITEDEF#0”的文件或参数无效

问题 在Dynamics AX 2012 安装Enterprise Portal 时最后配置阶段提示错误,信息如下: The site /sites/DynamicsAx could not be created. The following exception occurred: 网站模板“AXSITEDEF#0”的文件或参数无效。 参数名: WebTemplate. 仅当Busi…

minify php,php开源系统-使用Minify来优化网站性能

1 对php网站进行了搭建,并完成一些对图片上传的基本功能,服务器数据库的操作等等2 完成 首个jquery 框架中静态模板中加入 实际的函数范例;并了解和掌握了 sizzle.js 框架的使用流程和机制;并成功的在本地apache服务器站点上进行引…

现实世界的Windows Azure:专访PrivacyCentral网站创始人、CEO Zoiner Tejada

作为现实世界Windows Azure博客系列中的一部分,我联系了PrivacyCentral网站创始人、CEO Zoiner Tejada,来探寻该公司是如何利用Windows Azure平台及Ruby语言来搭建其强大的在线隐私服务。点击这里来了解PrivacyCentral的成功案例。下面我们来看看Tejada先…

PHP网站运维必知必会,运维架构师能力要求,做好运维必知必会的4个技能

一名OPS架构师,学习能力占了主要一部分(其实其他行业包括任何事情等等这都是关键一点)。如果这块缺失,仅凭一些生产线的经验教训,而不去反思,并从中总结出更多的经验来,想成为一个架构师那都是不现实的。那么优秀的OPS…

IIS7 网站发布常见问题及解决方案小结

把这两天发布网站遇到了一些问题总结了一下,希望对大家有用! 1、不是有效的Win32位应用程序 : 解决方案: 1、进入应用程序池》选中网站》点击右侧”高级设置“》将运行32位选项改为"True" 3、在IIS如何修改.NET FrameWo…

织梦网站服务器 开启服务,WEB服务器启用了OPTIONS方法

漏洞名称:WEB服务器启用了OPTIONS方法危险等级:★☆☆☆☆(轻危)漏洞类型:配置错误披露时间:2015-09-14漏洞描述:攻击者可利用options方法获取服务器的信息,进而准备进一步攻击。解决方案:修改配…

使用rem来开发你的移动端网站

what is rem &#xff1f; 1&#xff09;css3中的计量元素大小的单位&#xff0c;类似px、pt、em。 2&#xff09;一种相对根元素font-size的计算方式。1rem <html>s font-size px (你懂就好) 3&#xff09;使用场景&#xff1a;每个元素的宽高、文字大小、行距、补白等…

推荐20个精美的响应式设计(Responsive Design)网站作品

响应式网页设计是时下网页设计领域最热门的话题之一&#xff0c;该概念由著名网页设计师 Ethan Marcotte 在2010年5月份提出&#xff0c;其目标是要让设计的网站能够响应用户的行为&#xff0c;根据不同终端设备自动调整尺寸。今天这篇文章向大家推荐20个优秀的响应式布局网页 …

自动录制html网站,RPA自动化软件源码,可录制操作脚本(财务处理系统)

可录制操作脚本&#xff0c;并实现 重新操作。流程录制以及自动化模拟操作。资源下载此资源下载价格为2D币&#xff0c;请先登录资源文件列表RPA/Microsoft.Office.Core.dll , 409600RPA/microsoft.office.interop.excel.dll , 1628856RPA/Microsoft.Vbe.Interop.dll , 64112RP…

Mac下配置域名和网站测试环境

一、在 /etc/hosts 下配置相关域名1, controlspace 打开spotlight, 搜索“terminal”2, 打开Terminal 3, 在terminal界面中输入: sudo vi /etc/hosts 然后回车 4, 会提示让你输入密码 XXXX.&#xff08;注意输入密码时你看不到&#xff0a;号&#xff09; 5, 输入成功以后…

linux服务器运行程序shell脚本,Linux中shell脚本怎么运行_网站服务器运行维护,linux,shell,执行...

ssh linux是什么_网站服务器运行维护ssh linux是指ssh服务&#xff0c;是一个守护进程&#xff0c;系统后台监听客户端的连接&#xff0c;ssh服务端的进程名为sshd&#xff0c;负责实时监听客户端的请求&#xff0c;包括公共秘钥等交换等信息&#xff1b;ssh服务端由openssh和o…

linux 提高 gzip 速度,如何通过gzip和nginx来提高网站打开速度及整体性能

要知道&#xff0c;网站的打开速度取决于浏览器打开下载的网页文件大小。如果传输的页面内容文件减少&#xff0c;那你网站的打开速度一定会加快。特别是手机端的用户&#xff0c;打开网站速度受限于移动端网络&#xff0c;所以压缩网站页面内容显得至关重要。gzip是一种非常流…

微信小程序新闻服务器,微信小程序新闻网站详情页

扩展运算符的巧妙应用这个template模板&#xff0c;绑定的数据带item前缀那么使用模板的时候&#xff0c;也必须保证是itemdata帮绑定数据用双花括号包住item还有wx:for-item默认也是item&#xff0c;因此可省略这样带有item不利于代码复用&#xff0c;解决方法&#xff1a;将t…

UVaLive(LA) 3902 Network,Seoul 2007

题目传送门 显然先让第一个服务器成为根节点&#xff0c;然后我们搜一遍&#xff0c;先把所有叶节点入到一vector里面&#xff0c;vector的第一维是深度&#xff0c;出来之后让最深的叶节点晚上找第k级fa&#xff0c;因为这样可以让其影响力最大&#xff0c;然后去往所有方向搜…

iBATIS 3 试用手记 - The FUTURE - ITeye技术网站

iBATIS 3 试用手记 - The FUTURE - ITeye技术网站前记&#xff1a;本来打算去CSDN写这篇文章的&#xff0c;结果CSDN的服务器又出问题了&#xff0c;登录了N次都进不去&#xff0c;郁闷&#xff0c;干脆换个Blog来写。 iBATIS以其对SQL控制的灵活性而受到许多大型项目的青睐&am…