首页 > 编程知识 正文

java页面设计过程,java数据权限怎么做

时间:2023-05-05 09:35:46 阅读:58633 作者:3322

用户管理权限的设计几乎涉及所有开发的业务系统,因此一直是讨论的焦点。 虽然找了很多资料,但是大家的核心基本上是基于同样的:角色管理。 用户、角色、模块和权限的组合可以形成强大的权限管理系统。

最近在某个项目中设计的用户权限设计,我很乐意和大家讨论和共享。

设计理念

与其说是我的设计想法,不如说是我想实现的功能

1 .用户权限由角色控制,一个用户可以具有多个角色

2 .如果用户具有不同的角色,则其权限应该是多个角色的互补集合。

3 .一个角色有多个模块

4 .用户前端菜单的显示由角色拥有的模块决定,不同用户前端显示的操作菜单不同。

5 .页面上的功能按钮由模块中包含的功能定义,并由模块和角色的权限控制

6 .可以查看某个模块中有哪些用户,支持哪些角色,并进行特殊权限设置。

7 .可针对个别用户进行特殊设置

在我的项目中,基本达到了以上的效果和功能,但在实际过程中发现了一些不足之处。 由于整个权限设计都是基于数据库设计的,因此读取数据可能会影响性能(如果数据量很大(我说的数据量超过万) )。 但是,一般来说,我认为数千名用户等是可以承受的。 稍后说明不足之处。

数据库设计

基本设计:

1 .首先,设计数据库。

我想数据库的设计其实大家都很熟悉

基本表(用户表、角色表、模块表、菜单、管理员表)涉及企业性质时,可根据需要添加组织结构表、组表等其他辅助表

用户

管理员

角色列表

模块

(我的模块表考虑了子模块的要素,所以很有深度。 两个字段(父模块ID )在后来的开发中,为了转换思路,IsRootModule、FunctionCode我没有使用。 为了使整个权限系统更通用,我把它设计成了另一个表。 )

菜单(菜单是指与模块对应的功能。 添加、删除、修改、详细信息、列表、浏览、导出、导入等)。

业务表:用户-角色表模块-菜单角色-模块表

要为一个用户实现多个角色(1 to n )、一个角色实现多个模块(1 to n )、一个模块实现多个功能(1 to n ),必须添加几个相关的业务表。 我以前想过在视图中实现,但我个人认为视图最好只用于读取数据,不用于处理数据。 稍后它被证明是不可取的。 这里应该注意的是实际业务

用户-角色:

角色-模块:

模块-功能:

如你所见,表格结构简单,字段少,设计相似。 检索相关字段ID进行数据访问。

视图:“用户”“角色”“模块”“功能”视图

你可能会觉得不可思议,为什么这里会出现member_role呢? 因为数据表只访问ID值,而不包含在对应的RoleName字段中。 这里的视图是检索相关表中其他所需的字段数据。 其他两个视图大家看名字就应该知道对他有帮助。

保存过程:添加、删除、修改和列出每个表的数据。 判断是否存在相同数据

(CUDLIS-Create,Update,Delete,IfExist,Show,List )

不单独列出存储过程。 很简单。 如果写如下,基本上在开发过程中没什么问题。 需要注意的是,在相互关联的业务表中对数据插入进行重复数据判断。 (尽量避免用户角色表、模块菜单、角色模块表和重复数据插入)让我们来看看一些基本上需要实现的业务列表。

用户表: (插入、更新、IfExist、Show、Delete ) )。

用户角色表:(insert、Update、IfExist、Delete、RoleListByUserID、UserListByRoleID ) ) ) ) ) ) ) ) )。

角色表: (插入、更新、IfExist、Show、Delete ) ) ) ) ) )。

角色模块表:(insert、IfExist、Delete、Show、RoleListByModuleID、ModulistByRoleID ) () ) ) ) ) ) ) )。

模块表: (插入、更新、IfExist、Show、Dlete、ListByRootModuleID、ListByModuleLevel ) )。

模块菜单: (插入、更新、删除、功能列表bymoduleid ) )。

如果要直接获取用户的所有权限,则需要从视图中选择另一个名为Member_Role_M的Procedure

odule_Function中获取其对应的数据,这样就可以得到想要的东西了。

数据库设计部分应该就这样差不多了。我想这应该是通用的。在实际运用过程中,我个人认为应该有一些改进点:

1.模块与功能部分,可以用字符串的形式将模块对应的功能存在一个数据字段中,这样可能在你的代码编写中可以省下较多的时间并带来更多的便利(主要是可以用split()来代替频繁的数据获取业务)这个我在最初设计中没有想到这点,有点失策.

2.针对N级模块的权限展现问题,如何让父模块继承子模块的权限这个是我没有考虑到的,不过我想应该可以用IsRootModule这个字段来作文章,可惜我还没想到如何去整这个字段。当子模块很多时,在前端UI展示的时候是否会出现很慢的情况?这个我没有去做测试,带有一定的风险。

但在前端UI展示我还没想到或实现好的办法,我能想到的应该是像GridViewTree那种不错。

这个权限设计已经在我的Project中运用,暂时没有发现什么问题,而且为我以后对其它系统集成也很有帮助。至于如何在C#中实现业务,个人认为只要知道数据库如何整的,那C#中的业务实现只是一个取数操作过程。

posted on 2009-06-26 20:24 飞翔天使 阅读(33097) 评论(9)  编辑  收藏 所属分类: SQL

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。