zoukankan      html  css  js  c++  java
  • 通用权限sql设计

    基础版

    概念:

    权限控制一般分为两种

    1. 菜单可见权限

        控制哪些菜单、按钮可见,不可见。

    2. 数据可见权限

        控制哪些数据可见,不可见。

    今天只说《菜单可见权限》

    那么想要控制菜单可见的权限,最简单的,需要3个表:

    用户表-角色表-菜单表

    为什么中间要加个角色呢?自己想。

    思考:多个用户对应多种角色,多种角色对应多个菜单

    他们都属于多对多关系,于是需要中间表,他们变成了这样

    用户表-用户角色表-角色表-角色菜单表-菜单表

    上图

    上详情图

    进阶版

    1. 添加《用户菜单关联表》

    这种属于特殊情况,用于一些特殊用户。假设用户是管理员,直接通过这个表关联。更加方便快捷。

    2. 菜单表优化

    菜单一般分为3个等级:模块、菜单、按钮

    通常通过parentId(父级ID)来表示关系。

    还是上图吧

    3. 拆分按钮,当按钮过多时,将按钮从菜单表中拆分出来,形成按钮表。

    菜单与按钮一般都是一个菜单对应多个按钮,于是只要在按钮表中保留一个菜单ID即可,至于为什么不在菜单表中保留按钮ID,自己去想。

    4. 权限表进阶

    为了简单一些,在这之后省略中间关联表的描述,但是它还是在的,心里记得就行。

    表现形式一:

    用户-角色-菜单-权限表

    用户-角色-按钮-权限表

    模块-菜单-按钮(拆分表)

    这里添加了一个加权限表的,目的是为了把权限表缓存起来。查询权限时,只需要在缓存中查询,而不用去数据库。

    但是在每次授权之后,需要清除一下缓存。

    总结:

    无论如何变化、进阶,本质还是最基础:

    用户-角色-菜单

    这样一个思想。

  • 相关阅读:
    Java基础(十四)——API(Calendar类、System类、StringBuilder类、包装类)
    异常
    Java基础(十三)——权限修饰符和内部类
    知识点总结
    Java基础(十二)— —多态
    Java基础(十一)— —继承、抽象类和接口
    java基础(十)——继承
    小程序外部向组件内部传递externalClasses -- 传入样式wxss
    小程序组件交互 -- 传入js
    promise封装小程序的请求类(request,清爽易懂)
  • 原文地址:https://www.cnblogs.com/BingLiVIP/p/13414083.html
Copyright © 2011-2022 走看看