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.首先添加顶级父类
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); } };
神回复
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。