zoukankan      html  css  js  c++  java
  • 基于thinkphp的RBAC权限控制

    RBAC  Role-Based Access Control

    权限控制在后台管理中是十分常见的,它的模型大体上是下面这张图的形式

    我用的字段和上面不一样,图只是个示例

    一个简易的权限控制模型只需要3个表就行了

    user表:记录用户的信息和用户的角色

    ->user_id:用户的id

    ->user_role_id:用户的角色信息  0,1,2分别为超级管理员,经理,员工

     ->其它省略。。。

     

    role表:记录不同的角色信息,和他们拥有的权限

    ->role_id:角色的id    1为经理,2为员工,0无权限限制

    ->role_name:角色名称

    ->role_auth_ids: 存放权限的id

    ->role_auth_ac:该角色能够访问的页面

    auth表:记录每个权限的具体信息

    ->auth_id:权限id
    ->auth_name:权限名称

    ->auth_pid:权限的父级权限的id 

    ->auth_c:控制器的名称

    ->auth_a:显示页面的名称

    ->auth_path:用id表示权限的层级关系  0级权限为空,比如用户管理的id为5(假设它为最高级),那么它的auth_path为0,禁言用户为子权限,id为10。那么它的auth_path为5-10

    ->auth_level:权限的等级  0为一个目录下的最高权限,1为次级,2为次次级 如:商品管理(0)->商品列表(1)->添加商品。有些人能查看商品,但不一定能删除商品

     当用户访问页面时,先获取用户的信息

    user表中得到用户的角色信息,比如得到的是经理 id为1

    现在再去角色信息表中获取,该角色的权限

    能访问的权限Id有了,页面也有了。只要获取页面的路由,只要在我的权限内,则能访问,不再则显示没有权限

    那么auth_path表好像没用到?一开始权限表是空的

    我们添加权限的时候产生了id和页面的名称

    然后再把这些权限给 经理和员工角色,所以他们的表里面有了对应的信息

    然后给每个员工定义经理,员工等角色。。。。。。。

  • 相关阅读:
    javaEE中的字符编码问题
    java泛型中<?>和<T>有什么区别?
    list去重,String[]去重,String[]去空,StringBuffer去重,并且以','隔开,list拆分
    字符串转驼峰
    动态生成16位不重复随机数、随机创建2位ID
    POI不同浏览器导出名称处理
    图片转流
    RSA加密解密
    idea 使用在java 包下的ftl、xml 文件编译问题
    深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
  • 原文地址:https://www.cnblogs.com/anxiaoyu/p/6909713.html
Copyright © 2011-2022 走看看