现在的位置: 主页 > 公司荣誉 > 文章列表

权限中心的PHP架构

作者:潜江市宏光畜牧有限公司 来源:www.qjhgnm.com 未知发布时间:2017-09-04 18:16:00
权限中心的PHP架构

权限管理是无线运营系统中的核心模块,通过访问控制策略的配置,来约定人与资源的访问关系。本文着重讲解如何通过PHP来构建一个灵活、通用、安全的权限管理系统。

关于权限

首先我们来聊聊权限。

权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新对系统的权限进行设计,以满足不同系统用户的需求,将会浪费我们不少宝贵时间,所以花时间来设计一个相对通用的权限系统是很有意义的。

系统目标:对应用系统的所有对象资源和数据资源进行权限控制,比如 应用系统的功能菜单、各个界面的按钮、数据显示的列以及各种行级数据 进行权限的操控。

权限模型

设计初期,我们学习了Amazon的 IAM ,经过对比分析,最终我们选用 RBAC3模型 来指导系统的设计工作。

RBAC认为权限授权实际上是Who、What、How的问题。在RBAC模型中,who、what、how构成了访问权限三元组,也就是“Who对What(Which)进行How的操作”。

Who:权限的拥用者或主体(如Principal、User、Group、Role、Actor等等) What:权限针对的对象或资源(Resource、Class)。 How:具体的权限(Privilege,正向授权与负向授权)。 Operator:操作。表明对What的How操作。也就是Privilege+Resource Role:角色,一定数量的权限的集合。权限分配的单位与载体,目的是隔离User与Privilege的逻辑关系.

RBAC3模型

PHP架构之道

「如何用PHP构建我们的权限中心」

接下来我们将从 编码规范、依赖管理、数据源架构、数据处理、单元测试 等方面来体验一把PHP的神奇之旅。

编码规范

好的编码规范可以改善软件的可读性,可以促进团队成长,可以减少Bug,可以降低维护成本,可以。。。(这么X,我们必须要推广)

PHP社区一直百花齐放,拥有大量的函数库、框架和组件,因而PHP代码遵循或尽量接近同一个代码风格就非常重要。

框架互操作组(即PHP标准组)发布了一系列推荐风格。

Coding Style Guide 阅读PSR-4 Autoloader

权限中心的目录结构:

-- /tuniu/rbac |-- src | |-- App //应用建模层 | | |-- City.php | | |-- Cms.php | | |-- Menu.php | |-- App.php | |-- Auth.php | |-- Orm //ActiveRecord层 | | |-- App | | | |-- Resource | | | | |-- Map.php | | | |-- Resource.php | | | |-- User.php | | |-- App.php | | |-- Log.php | | |-- Role | | | |-- User.php | | |-- Role.php | | |-- Rule.php | | |-- User.php | |-- Orm.php | |-- Utils.php |-- tests //测试 | |-- bootstrap.php | |-- fixtures | | |-- null.yml | | |-- rbac | | | |-- app.yml | | | |-- auth.yml | | | |-- role.yml | |-- rbac | | |-- appTest.php | | |-- authTest.php | | |-- roleTest.php |-- vendor |-- composer.json |-- composer.lock |-- phpunit.xml |-- README.md

PSR-2,权限应用资源类:

namespace Tuniu\Rbac\Orm\App; use Tuniu\Rbac\Orm; use Tuniu\Rbac\Orm\App; use Tuniu\Rbac\Orm\App\Resource\Map; use Tuniu\Rbac\Orm\Rule; use Tuniu\Rbac\Orm\User; class Resource extends Orm {}

PSR-4,命名空间的约定:

\(\)*\

类名 文件路径
\Tuniu\Rbac\Orm\App\Resource /tuniu/rbac/src/Orm/App/Resource.php
\Tuniu\Rbac\App\Cms /tuniu/rbac/src/App/Cms.php
依赖管理

Composer 是PHP中用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer会帮你安装这些依赖的库文件。

权限中心的依赖声明:

{ "name": "tuniu/rbac", "require": { //声明依赖关系 "php": ">=5.3.0", "squizlabs/php_codesniffer": "2.*", //PHP_CodeSniffer检查代码规范 "php-activerecord/php-activerecord": "dev-master" //ActiveRecord }, "require-dev": { //声明开发依赖 "phpunit/phpunit": "~4.6", "phpunit/dbunit": ">=1.2" }, "autoload": { "psr-4": { "Tuniu\\Rbac\\": "src/" //命名空间 } } }

检查代码规范,执行单元测试。

$./vendor/bin/phpcs --config-set default_standard PSR2 $./vendor/bin/phpcs src $./vendor/bin/phunit

^^^^^^ 眼涩,眼酸,眼疲劳,怎么办。。。

滴眼液

骚年,如果舒服了,就使劲往下滑动吧。。。

争渡,争渡,惊起一滩鸥鹭。

数据源架构

基于权限中心各表的关系(各种关联,各种回调),采用传统的模式,必将把精力耗在无尽的循环中。

于是乎,开始寻觅一种数据源的架构模式,Active Record很靠谱的出现了。

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉建网站 http://www.feimao666.com

上一篇:Servlet框架基础和生命周期(结合源码)、destroy()的思 下一篇:最后一页