1.在 Admin 模块下创建一个 IndexController.class.php(默认就有了)

<?php
  namespace Home2\Controller;
  use Common\Controller\AuthController;

  class IndexController extends AuthController {
    public function index(){
      echo "后台首页(home2)";
    }
  }

?>

    2.在baidu根目录下的 Common 公共模块下创建 Controller 文件夹,并在里面创建一个 AuthController.class.php 类,这个类用于权限控制。

<?php
  namespace Common\Controller;
  use Think\Controller;
  use Think\Auth;

  class AuthController extends Controller {
    protected function _initialize() {
      $sess_auth=session('auth');
      if(!$sess_auth){
        $this->error('非法访问:跳登录页',U('Login/index'));
      }
          //超级会员,不用验证权限
      if($sess_auth['uid']==1){
        return true;
      }
          //权限判断
      $auth = new Auth();
                        //'Home2/Index/index'          //放权的id
      if(!$auth->check(MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME,$sess_auth['uid'])) {
        $this->error('没有权限',U('Login/index'));
      }
    }
  }

?>

    3.后台Home2里创建一个 LoginController.class.php,模版为 index.html。

      (模块) LoginController.class.php                    (模板)index.html

<?php                                <body>
  namespace Home2\Controller;                  <form method="post" action="{:U('Login/index')}">
  use Think\Controller;                        <p>用户名:<input type="text" name="user"></p>

  class LoginController extends Controller{             <p><input type="submit" name="登录"></p>
    public function index(){                    </form>
      if(IS_POST){                        </body>
        $login=array();
        switch(I('user',null,false)){
          case 'admin':
            $login['uid']=1;
            $login['user']='admin';
          break;
          case 'test':
            $login['uid']=2;
            $login['user']='test';
          break;
          case 'guest':
            $login['uid']=3;
            $login['user']='guest';
          break;
          default:
            $this->error('不存在此用户');
          }

      if(count($login)){
        session('auth',$login);
        $this->success('登录成功',U('Index/index'));
      }

      }
      else{
        $this->display();
      }
    }
  }

?>

    4.数据库中的表

可以在ThinkPHP/Library/Think/下的

  Auth.class.php中查看权限用法与表创建

DROP TABLE IF EXISTS `think_auth_rule`;
CREATE TABLE `think_auth_rule` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`name` char(80) NOT NULL DEFAULT '',
`title` char(20) NOT NULL DEFAULT '',
`type` tinyint(1) NOT NULL DEFAULT '1',
`status` tinyint(1) NOT NULL DEFAULT '1',
`condition` char(100) NOT NULL DEFAULT '', # 规则附件条件,满足附加条件的规则,才认为是有效的规则
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- ----------------------------
-- think_auth_group 用户组表,
-- id:主键, title:用户组中文名称, rules:用户组拥有的规则id, 多个规则","隔开,status 状态:为1正常,为0禁用
-- ----------------------------
DROP TABLE IF EXISTS `think_auth_group`;
CREATE TABLE `think_auth_group` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`title` char(100) NOT NULL DEFAULT '',
`status` tinyint(1) NOT NULL DEFAULT '1',
`rules` char(80) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- ----------------------------
-- think_auth_group_access 用户组明细表
-- uid:用户id,group_id:用户组id
-- ----------------------------
DROP TABLE IF EXISTS `think_auth_group_access`;
CREATE TABLE `think_auth_group_access` (
`uid` mediumint(8) unsigned NOT NULL,
`group_id` mediumint(8) unsigned NOT NULL,
UNIQUE KEY `uid_group_id` (`uid`,`group_id`),
KEY `uid` (`uid`),
KEY `group_id` (`group_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

直接将以上复制至数据库中即可创建三个表

think_auth_group     表名      

         id           title         status         rules

   用户id     用户名     状态(没什么)  权限id

        1       默认管理组       1            1,2,3,4,5

think_auth_group_access     表名    //把权限1分配给用户3

        uid        group_id       

        用户id  权限id    

      3     1 

think_auth_rule     id        name         title       type      status      condition

   表名    权限id   权限地址     权限名        1           1                 1

转载于:https://www.cnblogs.com/yjh1604600160/p/think20.html

thinkphp-权限控制相关推荐

  1. ThinkPHP的RBAC(基于角色权限控制)详解

    ThinkPHP的RBAC(基于角色权限控制)详解 一.什么是RBAC 基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到 ...

  2. ThinkPHP的RBAC权限控制

    ThinkPHP的RBAC(基于角色权限控制)详解 https://blog.csdn.net/renxing518/article/details/78192311 https://edu.51ct ...

  3. tp3.2.3权限控制一之详解及demo

    一.首先需明确TP3.2.3的权限控制是怎么实现的 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有多个角色, ...

  4. mysql用户控制登录_MySql用户权限控制_MySQL

    bitsCN.com MySql用户权限控制 本文将介绍MySql创建帐号,删除帐号,设置和介绍各种帐号的权限 创建用户帐号: www.bitsCN.com [sql] CREATE USER use ...

  5. 前、后端分离权限控制设计和实现思路

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:8rr.co/9QUT 简述 近几年随着react.angu ...

  6. cvs linux权限,Linux下CVS+ACL的权限控制是什么? 爱问知识人

    考试大Linux站整理:我的CVS服务器端是在linux下,我安装了cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz,利用CVS+ACL来做权限控制.但是现在遇到几个问题 ...

  7. Java访问权限控制

    面向对象的核心思想之一就是封装,只把有限的方法和成员公开给别人,这也是迪米特法则的内在要求,是外部调用方对方法体内的实现细节知道得尽可能少. 如何实现封装呢? 需要使用某些关键字来限制外部对类内属性和 ...

  8. 基于RESTful API 怎么设计用户权限控制?

    作者:JC_Huang http://www.jianshu.com/p/db65cf48c111 1   前言 有人说,每个人都是平等的: 也有人说,人生来就是不平等的: 在人类社会中,并没有绝对的 ...

  9. 8.Spring Security 权限控制

    Spring Security权限控制可以配合授权注解使用,具体有哪些注解可以参考Spring-Security保护方法.接着上一节,要开启这些注解,只需要在Spring Security配置文件中添 ...

  10. 2.Spring Security 用户注销 与 Thymeleaf 权限控制

    Spring Security 用户注销 与 Thymeleaf 权限控制 Spring Security 用户注销 1.上一篇<Spring Security 详细简绍与入门>中内存用户 ...

最新文章

  1. 结构体名和结构体名是个指针的区别
  2. MYSQL max_user_connections back_log max_connections参数和Max_used_connections
  3. Spring --- SpEL
  4. js控制页面元素的隐藏与显示
  5. textfile 属性
  6. eclipse build path 以及 clean(转)
  7. Linux之Nginx配置解析PHP
  8. 番茄花园win11 32位官方纯净版镜像v2021.07
  9. 中国电信:张志勇辞任公司执行副总裁
  10. java面试题库精选
  11. 计算机类专业试题及答案,计算机专业考试试题集及答案.doc
  12. php操作阿里云短信API接口
  13. ListView适配器
  14. 全国高校计算机能力挑战赛真题(一)
  15. 短视频云控系统的前世今生
  16. Dropping Pixels for Adversarial Robustness
  17. Matlab 中 residuez函数的使用
  18. 【推荐系统】User-Item CF:GC-MC
  19. ISO 14229、ISO 15765、ISO 11898的区别
  20. 【吃瓜教程】周志华机器学习西瓜书第三章答案

热门文章

  1. springMVC实现文件下载(附带Servlet方式)
  2. ifix如何设画面大小_ifix5.1环境下的ifix服务器、客户端配置
  3. 百度地图 js 在安卓端手指缩放无效_利用百度地图绘制3D轨迹演示
  4. python后端需要什么基础_python做后端好吗
  5. 蓝桥杯 历届试题 合根植物(并查集)
  6. java 具有绘图能力的类,《Java程序设计》复习题_绘图
  7. python访问服务器注册表,如何在Python中使用写入权限打开Windows注册表
  8. 嵌入式 linux 程序不能运行,嵌入式Linux中在开发板上/usr/bin目录下不能运行自己交叉编译的程序...
  9. ajax连mysql数据库_AJAX调用mysql数据库简单例子
  10. python3解析json数据_Python3高级教程