您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
三六零分类信息网 > 承德分类信息网,免费分类信息发布

yotaku的开发日志(1)

2026/5/11 20:57:15发布14次查看
2015-12-1821:17:46 连续看了几天的thinkphp框架,目前看到基于角色的用户访问权限控制。 相关代码如下: 数据库 用户表(管理员) mg_id mg_name mg_pwd mg_time mg_role_id 0 creatint 123 2587413547 1 1 yotaku 123 258744984 4 creaate table `sw_manager
2015-12-18 21:17:46
连续看了几天的thinkphp框架,目前看到基于角色的用户访问权限控制。
 相关代码如下:
数据库
用户表(管理员)
mg_idmg_namemg_pwdmg_timemg_role_id
0 creatint 123 2587413547 1
1 yotaku 123 258744984 4
creaate table `sw_manager` ( `mg_id` int(11) not null auto_increment, `mg_name` varchar(32) not null, `mg_pwd` varchar(32) not null, `mg_time` int(10) unsigned not null comment '时间', `mg_role_id` tinyint(3) unsigned not null default '0' comment '角色id', primary key (`mg_id`)) engine=innodb auto_increment=1 default charset=utf8;
权限表
auth_id(权限id)auth_name(权限名称)auth_pid(父id)auth_c(控制器)auth_a(操作方法)auth_path(全路径)auth_level(权限级别)
100 产品中心 0 '' '' 100 0
101 产品展示 100 managercontroller show 100-101 1
create table `sw_auth` ( `auth_id` smallint(6) unsigned not null auto_increment, `auth_name` varchar(20) not null comment '权限名称', `auth_pid` smallint(6) unsigned not null comment'父id', `auth_c` varchar(32) not null default '' comment '控制器', `auth_a` varchar(32) not null default '' comment '操作方法', `auth_path` varchar(32) not null comment '全路径', `auth_level` tinyint(4) not null default '0' comment '级别', primary key(`auth_id`)) enging-innodb auto_increment=1 default charset=utf8;
角色表
role_idrole_namerole_auth_idsrole_auth_ac
0 站主 1,3,9 操作器-控制器,操作器-控制器,...
1 高级管理员 1,2,3,9,12 操作器-控制器,操作器-控制器,...
create table `sw_role` ( `role_id` smallint(6) unsigned not null auto_increment, `role_name` varchar(20) not null comment '角色名称', `role_auth_ids` varchar(128) not null default '' comment '权限id,1,3,..', `role_auth_ac` text comment '控制器2-操作3,控制器1-操作6,...', primary key(`role_id`)) engine=innodb auto_increment=1 default charset=utf8;

数据模拟:
1.权限数据
产品中心(产品展示,最新产品,分类管理,子类管理) 高级管理(用户留言,留言簿,产品订购,文件管理) 系统管理(基本设置,样式管理,首页设置,管理员列表)
顶级权限insert into sw_auth values ( 100,'产品中心',0,'','',100,0 );insert into sw_auth values ( 101,'高级管理',0,'','',101,0 );insert into sw_auth values ( 102,'系统管理',0,'','',102,0 );insert into sw_auth values ( 103,'权限管理',0,'','',103,0 );次级权限insert into sw_auth values ( 104,'产品展示',100,'goods','show','100-104',1 );insert into sw_auth values ( 105,'最新产品',100,'goods','showlist','100-105',1 );insert into sw_auth values ( 106,'分类管理',100,'goods','cate','100-106',1 );insert into sw_auth values ( 107,'用户留言',101,'goods','words','101-107',1 );insert into sw_auth values ( 108,'留言簿', 101,'goods','wordsbook','101-108',1 );insert into sw_auth values ( 109,'基本设置',102,'goods','set','102-109',1 );insert into sw_auth values ( 110,'样式管理',102,'goods','css','102-110',1 );insert into sw_auth values ( 111,'用户列表',103,'goods','userlist','103-111',1 );insert into sw_auth values ( 112,'角色管理',103,'goods','role','103-112',1 );insert into sw_auth values ( 113,'权限列表',103,'goods','auth','103-113',1 );
2.角色数据
sw_role 站主 所有权限(103,104,105,106,107,108,109) 管理员 部分权限(104,105,109) 版主 部分权限(103,108)
角色insert into sw_role values (10,'站主','100,101,102,103,104,105,106,107,108,109,110,111,112,113','goods-show,goods-showlist,goods-cate,goods-words,goods-wordsbook,goods-set,goods-css');insert into sw_role values (11,'管理员','100,102,104,105,109','goods-showlist,goods-cate,goods-css');insert into sw_role values (12,'版主','100,101,103,106,108,113','goods-show,goods-set');
3.流程说明
index控制器内 获取用户的角色id,进而获得角色权限 进行判断是否展现数据 index控制器--->left方法--->left.html模板 index控制器
//(1)根据用户id获取本身记录信息 $mg_id = session('admin_id');
//d('manager')实例化了一个manager的model对象 $manager_info = d('manager')->find($mg_id); $role_id = $manager_info['mg_role_id'];
//(2)根据role_id 获得本身记录信息 $role_info = d('role')->find($role_id); $auth_ids = $role_info['role_auth_ids'];
//(3)根据$auth_ids 获得具体权限 $auth_infoa = d('auth')->where(auth_level=0 and auth_id in($auth_ids))->select();
//父级 $auth_infob = d('auth')->where(auth_level=1 and auth_id in($auth_ids))->select();
//子级 $this->assign('auth_infoa',$auth_infoa); $this->assign('auth_infob',$auth_infob);
//传到模板中 $this->assign('auth_info',$auth_info); $this->display();
4.模板 left.html
{foreach $auth_infoa as $k=>$v}background={$smarty.const.admin_img_url}/menu_bt.jpg >{$v.auth_name}
{foreach $auth_infob as $k2=>$v2}{if $v2.auth_pid == $v.auth_id}{$smarty.const.admin_img_url}/menu_icon.gif width=9> {$v2.auth_name}
{/if}{/foreach}
{/foreach}
承德分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product