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


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');


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜗牛慢慢向上爬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值