zoukankan      html  css  js  c++  java
  • thinkphp整合系列之rbac的升级版auth权限管理系统demo

    权限管理基本是作为网站的标配了;

    除非是像博客这类个人使用的;否则权限管理的重要性不言而喻;

    今个就来写写auth权限管理;

    thinkphp已经内置了auth权限类位于:/ThinkPHP/Library/Think/Auth.class.php

    执行里面的sql生成3张表auth_rule、auth_group、auth_group_access;

    然后自己再建一张users表;当然起其他的名字也是可以的;不过是需要在配置项中说明;

    先对各表的作用简单介绍;

    users:用户表;这个不废话;

    auth_group:用户组表;比如说超级管理员组、普通管理员组、编辑等等;同时记录每个管理组有哪些权限;

    auth_group_access:用户、群组关联表;比如说用户1属于超级管理员、用户2属于普通管理员和编辑;

    auth_rule:权限表;具体的每条权限是什么;

    如果还没看过权限管理;那建议先看源代码;透彻学习一样东西;最好的方法就是研究源代码;

    这里重点不是要讲auth的原理;而是要给一个auth的demo;

    git源代码:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin

    1:先下载项目并安装;

    完成后分别点超级管理员登录和文章管理员登录;

    你会发现他们的权限是不同的;看到的后台菜单是不一样的; 

    白俊遥博客

    2:菜单管理

    白俊遥博客

    为了控制每种管理员都能看到那些菜单;所以要有菜单的管理;

    操作的是demo中的admin_nav表

    3:权限管理

    白俊遥博客

    具体的每项权限的名称和内容;我这里一般都是和菜单对应的;

    但是会比菜单管理多出一些;对比两张图即可看出来;多出来的一般都是些对菜单的增删改;

    操作的是demo中的auth_rule表;

     

    4:用户组管理

    白俊遥博客

    这里就是增加管理组;并为每个管理组分配权限了;选中的就表示有权限看到或者操作了;

    白俊遥博客

    5:管理员列表

    白俊遥博客

    把所有的管理员都列出来;可以添加管理员或者修改管理员的管理组;

    白俊遥博客

     

    当构建好这样一个结构后;权限管理简单其实只需要AdminBaseController.class.php中如下一段代码就完成了;

    /Application/Common/Controller/AdminBaseController.class.php

    1
    2
    3
    4
    5
    6
    $auth=new ThinkAuth();
    $rule_name=MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME;
    $result=$auth->check($rule_name,$_SESSION['user']['id']);
    if(!$result){
        $this->error('您没有权限访问');
    }

    这也是在 thinkphp的目录结构设计经验总结  中讲述 /Application/Common/Controller中建各种BaseController的原因;

     

     

  • 相关阅读:
    在windows安装部署ShardingSphere-Proxy 分库分表中间件
    报错:fatal: unable to access 'https://github.com/xxx/': OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
    一台Windows配置多个mysql服务
    解决.net core 部署IIS报错:HTTP Error 500.30
    vs code 不格式化注释
    .net工具类——URL请求数据
    .net工具类——URL处理
    .net工具类——读取写入cookie
    js没有权限
    ueditor图片上传
  • 原文地址:https://www.cnblogs.com/XACOOL/p/5630357.html
Copyright © 2011-2022 走看看