zoukankan      html  css  js  c++  java
  • 模块设计

    设计基础:

      用户、角色、权限三大核心表,加上用户角色、角色权限两个映射表(用于给用户表联系上权限表)。

      这样就可以通过登录的用户来获取权限列表,或判断是否拥有某个权限。

      大致用到5张表:用户表(UserInfo)、角色表(RoleInfo)、菜单表(MenuInfo)、用户角色表(UserRole)、角色菜单表(RoleMenu)。

    各表的大体表结构如下:

      1、用户表(UserInfo):Id、UserName、UserPwd

      2、角色表(RoleInfo):Id、RoleName

      3、菜单表(MenuInfo):Id、MenuName

      4、用户角色表(UserRole):Id、UserId、RoleId

      5、角色菜单表(RoleMenu):Id、RoleId、MenuId

    最关键的地方是,某个用户登录时,如何查找该用户的菜单权限?

    其实一条语句即可搞定:

      假如用户的用户名为Arthur,则他的菜单权限查询如下:

      Select m.Id,m.MenuName from MenuInfo m ,UserInfo u, UserRole ur, RoleMenu rm Where m.Id = rm.MenuId and ur.RoleId = rm.RoleId and ur.UserId = u.Id and u.UserName = 'Arthur'

      任何权限的需求,都是为广义的用户分配角色,角色拥有广义的权限。角色是最重要的中枢,隐藏做幕后黑手,从不出现在业务代码里,用行话说就是解除了用户和权限的直接耦合。

      角色把用户抽象化了,几百个用户变成成几个角色,用户->角色->权限写成通用判断权限的方法:currUser.IsHave(xx权限)。核心就是一个sql联表查询语句,查询条件为用户id。

    例如:
      部门权限:部门也是一种用户,建立 部门表、部门角色表。通用权限方法里加上 当前部门->部门所属角色->权限 
      职位权限:职位也是一种用户,建立职位表、职位角色表,同上
      菜单:也是一种权限,建立 菜单表、角色菜单表,就把菜单纳入了权限管理。通用权限方法里加上 角色列表->权限、菜单

     

  • 相关阅读:
    MySQL主从配置实现(同一台主机)
    MySQL主从配置实现
    FTP的安装配置使用
    NFS的安装配置使用
    Samba的安装配置使用
    Cacti的基本安装配置
    STL标准库-迭代器
    STL标准库-容器-unordered_set
    STL标准库-hash
    STL标准库-容器-rb_tree
  • 原文地址:https://www.cnblogs.com/mapstar/p/10182420.html
Copyright © 2011-2022 走看看