zoukankan      html  css  js  c++  java
  • 设计OA系统的用户角色权限分配

    一,前言 

      本文主要讲述在OA系统设计时用户——角色——权限的数据库设计,以便实现权限分配。

    二,初步分析

      用户通过UI登录系统时,把用户的用户名、密码传递给后台判断用户表中是否存在可用的用户信息,如果存在那么允许页面的跳转,并设置一些Session信息,当页面跳转时根据用户的Session信息获取用户的角色,进一步根据角色获取用户的操作权限,这里的操作权限包括角色可以操作的菜单,以及此菜单对应的操作按钮。

      通过上面的描述就可以分析出系统中包含的数据表有T_Users(用户表)、T_Roles(角色表)、R_UserRole(用户角色关系表)、T_Menus(菜单表)、T_Button(按钮表)以及

    R_Privilege(角色、菜单、按钮关系表)、R_MenuButton(菜单按钮关系表),总共七张表。为了使文章更具有正对性,对于其他和本文分析的问题无关紧要的数据表例如T_Deprt(部门表)等省去不提。

      下面通过物理模型图分析这些表的关系:

      

      以上的所有表中省去了对分析问题没有必要存在的一些数据字段。这些必要的字段相信开发的人员都能知道是什么意思,所以不做解释。

      需要说明的是:所有关系表(以"R_"开头的表)关联的表中的主键都是N:N的关系。此处需要特殊说明的就是R_Privilege表中的ObjectID、ObjectDescr。因为权限表既需要对应菜单,又需要对应增删改查的

    按钮,所以ObjectID的值是MenuID或者MenuButtonID,这样对应的ObjectDescr就是Menu和Button。

      当用户登录时,会根据条件ObjectDescr='Menu'获取角色的RoleID对应的ObjectID=T_Menu.MenuID,这样能够获取所拥有的可操作的菜单。

      当打开某一页面时,根据条件ObjectDescr='Button'获取角色的RoleID对应的ObjectID=R_MenuButton.MenuButtonID,这样可以获取用户在相关页面的操作按钮BtnID。  

    三,结语

      以上即是关于主题的分析,希望能抛砖引玉。
  • 相关阅读:
    InnoDB和MyISAM区别
    include和require的区别
    php的魔术方法
    php中heredoc的使用方法
    20条常见的编码陷阱
    php header 跳转
    php.ini设置详解
    session的实现原理 大网站应用应注意的问题
    Ruby on Rails 开发实践相关命令参考
    IBM WebSphere Portal6 最佳项目实践
  • 原文地址:https://www.cnblogs.com/jsping/p/2872972.html
Copyright © 2011-2022 走看看