} } }

    权限把握的一个思路

    添加时间:2013-7-26 点击量:

    数据库表布局



    CREATE TABLE `NewTable` (
    
    `id`
    int11NOT NULL AUTO_INCREMENT,
    `title`
    varchar255NOT NULL
    `menu_id`
    int11NOT NULL
    `module`
    varchar50NOT NULL
    `class`
    varchar50NOT NULL
    `method`
    varchar50NOT 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取得他所属于的菜单选项,如许就获得了当前用户所拥有的菜单权限。

    分享到: