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。  

    三,结语

      以上即是关于主题的分析,希望能抛砖引玉。
  • 相关阅读:
    CodeForces 706C Hard problem
    CodeForces 706A Beru-taxi
    CodeForces 706B Interesting drink
    CodeForces 706E Working routine
    CodeForces 706D Vasiliy's Multiset
    CodeForces 703B Mishka and trip
    CodeForces 703C Chris and Road
    POJ 1835 宇航员
    HDU 4907 Task schedule
    HDU 4911 Inversion
  • 原文地址:https://www.cnblogs.com/jsping/p/2872972.html
Copyright © 2011-2022 走看看