权限把握的一个思路
添加时间:2013-7-26 点击量:
数据库表布局
CREATE TABLE `NewTable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`menu_id` int(11) NOT NULL,
`module` varchar(50) NOT NULL,
`class` varchar(50) NOT NULL,
`method` varchar(50) NOT NULLPRIMARY KEY (`id`)
);
假定我们应用了MVC的布局,并经由过程url接见对应的模块及类和函数。
表中第一行默示一个操纵,title默示操纵名,menu_id默示属于哪一个菜单选项,module默示模块名(没有可以略过),class默示类名,method默示函数名
此外我们还须要一个用户组的表,大致如下:
此中access_list中保存的当前用户组所拥有的权限ID(对应上个权限表中的ID)
当然我们还须要一个用户表来对应用户组表
group_id默示的第用户所对应的用户组
接见一个url的时辰,比如:
http://testApp.test.com/index.php/module/testModule/testClass/testAction
经由过程路由解析,我们获得响应的数据:
模块->testModule
类->testClass
函数->testAction
经由过程三个参数,我们查找权限表中的数据,获得一个独一的id值。
然后对比用户组中access_list中的数据,若是数据中包含有这个id,那么当前用户拥有当前操纵的权限,反之没有权限。
那么我们如何来把握菜单选项,当用户有权限时才显示呢?
因为在权限表中的每个操纵都对应有一个menu_id,即菜单选项。我们经由过程查找当前用户所属于的用户组信息,获得他所拥有的权限操纵ID,再经由过程ID取得他所属于的菜单选项,如许就获得了当前用户所拥有的菜单权限。
数据库表布局
CREATE TABLE `NewTable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`menu_id` int(11) NOT NULL,
`module` varchar(50) NOT NULL,
`class` varchar(50) NOT NULL,
`method` varchar(50) NOT NULLPRIMARY KEY (`id`)
);
假定我们应用了MVC的布局,并经由过程url接见对应的模块及类和函数。
表中第一行默示一个操纵,title默示操纵名,menu_id默示属于哪一个菜单选项,module默示模块名(没有可以略过),class默示类名,method默示函数名
此外我们还须要一个用户组的表,大致如下:
此中access_list中保存的当前用户组所拥有的权限ID(对应上个权限表中的ID)
当然我们还须要一个用户表来对应用户组表
group_id默示的第用户所对应的用户组
接见一个url的时辰,比如:
http://testApp.test.com/index.php/module/testModule/testClass/testAction
经由过程路由解析,我们获得响应的数据:
模块->testModule
类->testClass
函数->testAction
经由过程三个参数,我们查找权限表中的数据,获得一个独一的id值。
然后对比用户组中access_list中的数据,若是数据中包含有这个id,那么当前用户拥有当前操纵的权限,反之没有权限。
那么我们如何来把握菜单选项,当用户有权限时才显示呢?
因为在权限表中的每个操纵都对应有一个menu_id,即菜单选项。我们经由过程查找当前用户所属于的用户组信息,获得他所拥有的权限操纵ID,再经由过程ID取得他所属于的菜单选项,如许就获得了当前用户所拥有的菜单权限。