PHP+mysql 权限角色管理
浏览量:435
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.首先添加顶级父类
            
b.在等级父类下添加权限分类
            
4.给角色添加权限
    
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);
    }
    
};
神回复
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。