`

关于权限系统设计的一些问与答

阅读更多

一个朋友留言,提了一些关心的问题,这里说说自己的想法(不一定对)。
问题:
数据范围的控制:“事实上不是每个用户都可以看到所有记录的。以财务管理为例,部门经理只能查看金额小于1W的数据;而总经理则没有限制”。象这样要根据数据的某个字段对数据范围进行控制,应该实现呢,是通过AOP动态改变执行的SQL吗?这样似乎不太可行,如果要执行的SQL特别复杂,那动态改变SQL 就更难了。现在的应用中一般使用hibernate,这样的话就变成了动态改变HQL,也是难的。
回答:目前在我的代码里就是通过AOP动态改变执行的SQL,改变HQL确实很困难,但是改变criteria就比较简单了。对于特别复杂的sql,我的建议是把这些SQL直接写到你的业务程序里去,或者单独配置出来,和ibatis比较类似。

问题:单条数据ACL权限:由于数据是不断增加的,所以要对单条数据的ACL权限,不应该是数据已存在,然后再对存在的数据授权,应该是对某种规则进行授权。以你举的个人通讯录为例,各人自己维护自己的通讯记录,数据只对自己可见,要想实现对自己的数据的可再授权,应该是对符合某个规则的数据进行授权,也就是说 “要执行授权操作的人就是数据的拥有者”这是个规则,那是不是应该对这个规则授权呢。
回答:我理解的和你不一样。我的理解是这样的,实际中我把单条数据的权限划分为拥有、浏览、修改、删除四种权限,用户拥有哪种权限就可以对数据进行相应哪种操作。“要执行授权操作的人就是数据的拥有者”也可以理解为“要执行授权操作的人就必须有该数据的拥有权限”,这可以理解为一种规则,但我更愿意把它理解为一种习惯,很显然对习惯授权是没有意义的。当然这里是存在规则的,这种规则简单的说是这样:当我新增一条数据时,哪些人对该条数据拥有拥有的权限,哪些人对该条数据拥有浏览的权限,哪些人对该条数据拥有修改的权限,哪些人对该条数据拥有删除的权限。权限相关记录会在新增这条数据时根据该规则生成。在上面的例子里,这一规则体现在:各人自己维护自己的通讯记录,数据只对自己可见。也就是说在用户新增自己的通讯记录时,系统同时往权限表里插入了该用户对该记录的一个拥有权限记录。

问题:数据字段权限:要实现对某个字段的权限控制,那是不是应该所有字段应该有个默认的操作呢,或者默认就是只可以查看,要进行修改的话就必须授权。但是通常整个应用中的字段非常多,这样是乎不太合理。那是不是可以做成所有字段默认就是可以CRUD的,只有要控制的字段才进行权限判断。同样,由于使用 Hibernate来进行持久化,那对字段的控制是不是就变成了对类中属性的控制。
回答:数据字段权限一直是一个很难办的事情,实际上我很倾向于把这个问题推到页面来解决。其实所有的权限控制最后都是要通过页面来表现的。其实对字段来说,所需要的权限也很简单:可见/不可见,只读/可修改。这样的话,通过标签的形式来控制字段的显示、只读就显得很自然。对字段的权限记录可以放入到数据库,或者xml中,与具体的pojo类没有关系,当渲染页面的时候,由标签来读取相关权限记录并控制显示。

问题:角色权限的继承:角色权限的继承通过规则来做,这个规则应该怎么设计呢。
回答:这个问题其实是一个分离关注点的问题。你可以抽象出一个规则接口,这个接口定义了对部门、角色下的用户而言,哪些权限是可以从部门角色继承的,继承几级,哪些是不可以的。然后再具体实现。更灵活的方式是定义出一个配置文件,运行时可以灵活修改。

分享到:
评论

相关推荐

    操作系统设计与实现上册课后答.pdf

    在"操作系统设计与实现上册课后答.pdf"中,涉及了多个关于操作系统的基础知识点。 1. **操作系统的两大功能**:一是扩展硬件功能,为用户提供抽象化的、易用的接口;二是管理硬件资源,包括处理器、内存、输入/输出...

    学生在线考试管理系统的设计与实现

    《学生在线考试管理系统的设计与实现》 随着信息技术的飞速发展,在线教育逐渐成为教育领域的重要组成部分,特别是在解决考试作弊问题上,无纸化在线考试系统展现出了强大的潜力。本项目旨在设计并实现一个功能完备...

    javaweb论坛系统毕业设计 源码+sql脚本+论文 完整源码

    总的来说,这个JavaWeb论坛系统毕业设计涵盖了Web开发的多个重要知识点,包括SSH框架的使用、数据库设计与管理、用户认证与权限控制、Web交互逻辑实现等,对于学习者来说,既可以直接运行系统进行实践,也可以深入...

    asp职称考试模拟系统的设计与实现(源代码+论文).zip

    9. **论文内容**:论文部分可能涵盖系统的需求分析、系统设计、实现过程、性能测试和优化策略,是理论与实践结合的重要体现,对于理解整个项目的开发流程具有指导意义。 通过这个项目,学习者不仅可以掌握ASP编程...

    VB上机考试系统的设计的方案

    ### VB上机考试系统的设计与实现 ...综上所述,基于VB的上机考试系统设计与实现不仅能够有效提升考试效率,还能降低运营成本,提高学生的考试体验。通过合理的规划和技术实现,这一系统有望在学校教育中发挥重要作用。

    基于ASP.NET在线考试系统设计

    **基于ASP.NET的在线考试系统设计** ASP.NET是微软公司推出的Web应用程序开发框架,它以其高效、稳定和易于开发的特点,被广泛应用于构建各种类型的Web应用,包括在线考试系统。本设计旨在阐述如何利用ASP.NET技术...

    ASP服装销售系统设计(论文+答辩PPT+源代码+翻译+开题报告+任务书+实习报告)

    ASP服装销售系统设计是一个基于ASP(Active Server Pages)技术的电子商务解决方案,主要目的是为了实现服装销售业务的在线管理。这个系统涵盖了多个关键模块,包括商品管理、订单处理、用户交互以及后台数据分析等...

    jsp毕业设计——JSP在线考试系统的设计与实现(源代码+论文).zip

    以下是关于这个系统设计与实现的主要知识点: 1. **JSP技术基础**:JSP是一种动态网页开发技术,基于Java语言,用于创建交互式的Web应用。它将HTML、CSS和JavaScript等前端技术与Java后端逻辑相结合,使得服务器端...

    计算机操作系统(汤子瀛主编)习题答

    《计算机操作系统》是计算机科学与技术领域的一本经典教材,由汤子瀛教授主编,它深入浅出地讲解了操作系统的原理、设计和实现。这本书的习题解答对于学习者来说,是理解和巩固课程知识的重要参考资料。以下是针对该...

    实验三问答参考1

    在操作系统中,中断和异常是两种关键的处理机制,它们用于响应系统内外的各种事件。实验三主要关注操作系统的中断...这些概念和机制是操作系统核心功能的基础,理解和掌握它们对于操作系统的设计、调试和优化至关重要。

    历年数据库系统工程师真题答桉2004-2010.rar

    软考(全国计算机技术与软件专业技术资格(水平)考试)中的数据库系统工程师考试,旨在评估和认证候选人在数据库管理、设计和优化方面的专业能力。这个压缩包文件“历年数据库系统工程师真题答桉2004-2010.rar”...

    双鱼林asp.net在线考试系统毕业设计源码

    2、加入了权限管理,系统分为三种用户,管理员、教师和学生,管理员可以设定教师有哪些权限 3、“在用户管理”这一模块中,还增加了一个“重置密码”的功能,如果用户忘记密码了,管理员则可以把用户的密码重置 4...

    springboot基于HTML5的问卷调查系统的设计与实现.zip

    权限管理:系统支持多用户登录,不同用户具有不同的权限,如创建问卷、查看问卷等。管理员可以对用户进行管理,如添加、删除用户等。数据安全:系统采用了加密技术,保证用户数据的安全性。同时,系统还提供了数据...

    数据库系统概论答桉第四版

    《数据库系统概论》是计算机科学领域中一本重要的教材,主要涵盖了数据库设计、管理、查询以及优化等核心概念。第四版通常会包含最新的理论进展和技术更新,以适应不断发展的信息技术环境。下面,我们将深入探讨该书...

    网上考试系统案例(c#)

    网上考试系统通常采用三层架构设计,包括表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。C#中的ASP.NET技术是构建此类系统的基础,它提供了强大的Web应用程序开发框架。ASP.NET MVC或ASP.NET Core MVC可以...

    ASP在线考试制卷系统的设计与实现(源代码+论文)【ASP】.zip

    ASP在线考试制卷系统的设计与实现是一套基于ASP技术的教育信息化解决方案,旨在提供便捷、高效的方式进行在线考试试卷的创建、管理与分发。该系统涵盖了从试题库管理、试卷模板设定、自动组卷到成绩统计分析等多个...

Global site tag (gtag.js) - Google Analytics