zoukankan      html  css  js  c++  java
  • 权限控制的一个思路

    数据库表结构

    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取得他所属于的菜单选项,这样就得到了当前用户所拥有的菜单权限。

  • 相关阅读:
    李晋的YIM每日签名
    C语言的基础知识
    数据库的分页方法总结
    C#操作XML的代码
    ASP文件操作的类
    spring配置文件的基本语法
    预测球队比赛成绩
    文件的读写和我的第一个网页
    python中关于turtle库的学习笔记
    python科学计算与可视化
  • 原文地址:https://www.cnblogs.com/wkpilu/p/php_acl.html
Copyright © 2011-2022 走看看