晓夏

北漂的女孩

Good Luck To You!

PHP+mysql 权限角色管理

浏览量:432

1.角色管理

数据库设计:

CREATE TABLE `hhs_role` (
  `role_id` smallint(6) NOT NULL AUTO_INCREMENT,
  `role_name` varchar(60) NOT NULL DEFAULT '' COMMENT '角色名字:超级管理员',
  `action_list` text NOT NULL COMMENT '权限地址,all',
  `role_describe` text COMMENT '角色描述: 超级小二,拥有所有权限',
  PRIMARY KEY (`role_id`),
  KEY `user_name` (`role_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

2.权限管理

数据库设计:

CREATE TABLE `hhs_privilege` (
  `priv_id` smallint(6) NOT NULL AUTO_INCREMENT,
  `parent_id` smallint(6) NOT NULL DEFAULT '0' COMMENT '父级模块',
  `priv_name` varchar(32) NOT NULL DEFAULT '' COMMENT '权限名称',
  `privilege` varchar(300) NOT NULL DEFAULT '' COMMENT '权限字段',
  `priv_desc` varchar(200) NOT NULL DEFAULT '' COMMENT '权限描述',
  `reference` varchar(100) NOT NULL COMMENT '涉及权限',
  PRIMARY KEY (`priv_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

3.权限添加

    a.首先添加顶级父类

            图片.png

   b.在等级父类下添加权限分类

            图片.png

   4.给角色添加权限

    图片.png

5.最后在入口文件设置查看的权限

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

/*
*验证需要登录和不需要登录的
*/
$hook['post_controller_constructor'] = function () {
    global $class, $method, $IN, $OUT;
    $no_login = array('App/index','Admin/code','Admin/login');//不需要登陆的模块
    $ci = &get_instance();
    $ci->load->model('session');
    $c_method = $class . '/' . $method;
    if (!in_array($c_method, $no_login) && $class != 'Cron' && !$ci->session->admin_id) {
        if ($IN->is_ajax_request()) {
            $data = array('error' => 110, 'msg' => '未登录');
            $OUT->set_output(json_encode($data));
            die;
        }
        header("Location: ?c=app&m=index");
        die;
    }
    //权限校验
    //$priv_free-任何用户都可以访问的权限
    $priv_free = "admin/index,goods/list,order/list,app/index,admin/header,admin/menu,admin/main,goods/goods_list,admin/login,admin/logout,order/order_list,admin/code";
    $role_id = $ci->session->role_id;
    $ci->load->model('RoleInfo');
    $is_ajax = $ci->input->get_post('is_ajax');
    $role_info = $ci->RoleInfo->roleFind($role_id);
    if($ci->input->is_ajax_request()) {
        if(strpos($role_info['action_list'],strtolower($c_method)) === false && $role_info['action_list'] != 'all' && strpos($priv_free,strtolower($c_method)) === false) {
            echo json_encode(-1);
            exit();
        }
    } else {
        if(strpos($role_info['action_list'],strtolower($c_method)) === false && $role_info['action_list'] != 'all' && strpos($priv_free,strtolower($c_method)) === false) {
            echo "<script>alert('您没有权限访问!请联系超级管理员分配权限!');</script>";
            echo "<script type='text/javascript'>window.history.go(-1);</script>";
            exit();
        }
    }

    //记录小二后台操作
    if(strtolower($class) != 'cron') {
        $admin_id = $ci->session->admin_id;
        log_message('NOTE','Waiter Operation Record:'.$admin_id);
    }
    
};






神回复

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。