APP下载

基于ThinkPHP 通用系统框架项目案例库设计与实现

2015-10-24李华平

电脑知识与技术 2015年5期

李华平

摘要:重庆工程学院一直重视学生工程应用能力培养,该文以一通用系统框架项目案例库设计与实现,介绍了一常用的通用系统框架,并重点地论述了基于ThinkPHP框架在用户角色权限分配及管理的设计与实现。为学生和工程应用人员在设计与实现通用系统框架提供参考。

关键词:通用系统框架;ThinkPH;角色权限管理;AOP

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)05-0082-02

我校一直重视学生工程应用能力培养,每年学院中程训练中心都要为专业开发1至3个实训项目案例库,用以培养学生的工程规范和应用能力,在一般WEB应用管理系统中,一般要对用户、角色和权限、基础信息等通用功能进行管理,此项目案例库采用ThinkPHP框架作为其开发技术,完成通用框架系统开发,不仅让学生了解一般应用系统对系统用户、角色及其权限的控制机制,掌握应用系统框架的搭建,为其设计应用系统提供设计参考,其设计和代码重用性较高,甚至可以直接引用,也可以作工程训练中心对外进行社会技术服务时,节省项目开发时间。

1 系统概述

此系统主要功能需求包括:用户管理、角色管理、权限管理、模块管理、系统登录,考虑到实训周期为期1月的整体安排,本项目对一般系统框架需要考虑的系统日志与数据操作日志、数据库的备份与恢复、组织架构管理(部门管理)、员工管理等也做了删减。系统功能结构图如图1所示。

2 系统设计与实现

2.1系统数据库E-R图模型

2.2 用户角色权限关系模型

用户表sys_user(id,account,password,status,sysempid)

角色表sys_role(id,name)

模块表sys_module(id,name,url,sortcode,parentid)

角色权限表sys_roleauth(rid,mid)

用户角色关系表sys_roleuser(rid,mid)

2.3 核心功能实现

此项目案例功能主要是对部门、员工、用户(账号)、角色、模块(权限)进行增、删、改、查,并建立起相应数据的关系,为此本文只对此项目案例系统中的关键核心功能和难点进行论述。

2.3.1 用户角色权限分配实现

用户角色权限分配和角色权限分配都属于在已有的两张数据表中建立关系的操作,本以只以用户角色权限分配为例。在ThinkPHP中有两种方式可以进行操作,一是建立两张模型的多对多关系,通过多对多的关联操作建立起两张表数据关系;二是将多对多关系产生的中间表看成一个数据模型,在进行用户授权时,首先将中间依据角色ID将数据清空,然后再进行批量添加。本文采用第二种方式,效率更高,操作更简洁便于理解。

2.3.2 用户权限管理实现

用户权限管理采用的ThinkPHP的行为模式,行为(Behavior)是一个比较抽象的概念,你可以想象成在应用执行过程中的一个动作或者处理,在框架的执行流程中,各个位置都可以有行为产生,例如路由检测是一个行为,小到浏览器检测、多语言检测等等都可以当做是一个行为。我们把这些行为发生作用的位置称之为标签(位),当应用程序运行到这个标签的时候,就会被拦截下来,统一执行相关的行为,类似于AOP编程中的“切面”的概念。用户权限管理的实现思路:在用户请求操作前,在action_begin标签(位),建立权限用户检行为。具实现主要过程为:1)用户登陆成功后,将该用户所具有的权限全部查询出来,并存放在session中;2)编写用户检测行为,获取用户请求的模块,控制器、操作名,组成模块中验证url地址(请求的localhost/index.php/home/index/index,我们将home/index/index请求路路存放到模块的url中)先检测此操作是否需要权限检测,如果不需检测跳过,如果需检测,判断此请求路由是否在用户所权限例表里,如存在,返回true,失败返回false。其中的难点是如查询用户权限例表,具体可采用ThinkPHP的SQL原生态查询、JOIN关联查。参考代码如下:

[ public static function getPowerList($id){

$Model = new Model(); // 实例化一个model对象

$data = $Model->query("select a.url from sys_module as a,sys_roleauth as b ,

sys_roleuser as c where a.ID=b.MID and b.RID=c.RID and c.UID=$id");

return $data;

}\&]

3 结束语

此通用系统框架项目案例的基本实现了一个通用框架的基本功能,且能够较好、较快的应用到的事的实际项目中,但此系统还存一定的缺陷,此通用系统框架只能较好的运用在中小型管理应用系统中,因为在角色控制的不够细分,没有对角色进行分层设计,权限的控制只控制到了操作层面,还可更进一步地细化到页面层。