PHP+mysql 权限角色管理
浏览量:437
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);
}
};
神回复
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。