thinkphp控制器权限 (在构造函数时统一加权限等)

来源:互联网 发布:simnow python 编辑:程序博客网 时间:2024/06/11 21:13


class CircleTopicController extends Controller{    //检查是否登录    public function _initialize() {        check_login();    }    

/* * 检查是否登录 */function check_login(){    if(!isset($_SESSION['loginstate']) || $_SESSION['loginstate']==0){        $_SESSION['loginstate'] = 0;        unset($_SESSION['adminname']);        $login_url = C('APP');        header('Location: '.$login_url.'/Index/Index/login');    }else{//否则检查权限        check_rbac();    }}



/* * 检查权限 */function check_rbac(){    $role_name = $_SESSION['adminname'];    $rbac_id  =explode(',',M('admins')->where("adminname = "."'$role_name'")->getField('rbac_id'));    $rbac_controll_info = [];    foreach($rbac_id as $key=>$value){        $rbac_controll_info[] = M('admins_rbac')->where("id = ".$value)->getField('controller');    }    $rbac_controll_info = explode(',',implode(',',$rbac_controll_info));    if($rbac_controll_info){        $current_controll = explode('/',$_SERVER['PHP_SELF'])[2];        if(!in_array($current_controll,$rbac_controll_info)){            echo "<script>alert('You do not have permission to access!');history.go(-1);</script>";            exit();        }    }else{        echo "<script>alert('You do not have permission to access!');history.go(-1);</script>";        exit();    }}

用户表,权限 表

SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `admins`-- ----------------------------DROP TABLE IF EXISTS `admins`;CREATE TABLE `admins` (  `adminid` int(8) NOT NULL AUTO_INCREMENT,  `adminname` varchar(50) DEFAULT NULL,  `adminpass` varchar(32) DEFAULT NULL,  `regtime` int(12) DEFAULT NULL,  `sex` int(1) DEFAULT NULL,  `settime` int(12) DEFAULT NULL,  `email` varchar(50) DEFAULT NULL,  `phone` varchar(20) DEFAULT NULL,  `rbac_id` varchar(100) DEFAULT NULL COMMENT '权限表id  (针对的是版块)',  `rbac_user_power` varchar(20) DEFAULT NULL COMMENT '操作权限(针对的是 增、改、删)add,add,del',  PRIMARY KEY (`adminid`)) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;




SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `admins_rbac`-- ----------------------------DROP TABLE IF EXISTS `admins_rbac`;CREATE TABLE `admins_rbac` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `menu_name` varchar(60) DEFAULT NULL COMMENT '后台 菜单名称',  `controller` varchar(200) DEFAULT NULL COMMENT '允许访问控制器名称',  PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;-- ------------------------------ Records of admins_rbac-- ----------------------------INSERT INTO `admins_rbac` VALUES ('1', '用户列表', 'SiteUsers');INSERT INTO `admins_rbac` VALUES ('2', '商家入驻', 'Ruzhu');INSERT INTO `admins_rbac` VALUES ('3', '圈子问答', 'Ask,Answer');INSERT INTO `admins_rbac` VALUES ('4', '资料管理', 'DataExamine,Data');INSERT INTO `admins_rbac` VALUES ('5', '资讯列表', 'News');INSERT INTO `admins_rbac` VALUES ('6', '标签管理', 'labelClassify,label,Label');INSERT INTO `admins_rbac` VALUES ('7', '圈子管理', 'circleCategory,circle,CircleTopic,CircleTopicReply,Circle');INSERT INTO `admins_rbac` VALUES ('8', '系统用户管理', 'Users');INSERT INTO `admins_rbac` VALUES ('9', '首页信息推荐', 'IndexRecommend');INSERT INTO `admins_rbac` VALUES ('10', '退出', 'Index');INSERT INTO `admins_rbac` VALUES ('11', 'app轮播图', 'AppSlide');INSERT INTO `admins_rbac` VALUES ('12', 'web轮播图', 'WebSlide');INSERT INTO `admins_rbac` VALUES ('13', '中奖记录', 'DrawPrize');


0 0
原创粉丝点击