b2c信息网

您现在的位置是:首页 > 昨日新闻 > 正文

昨日新闻

雪狐网rbac源码的简单介绍

hacker2022-09-15 10:50:19昨日新闻102
本文目录一览:1、PHP在RBAC中如何给一个单一的用户添加多个权限2、

本文目录一览:

PHP在RBAC中如何给一个单一的用户添加多个权限

没有现成的。 首先修改权限是哪里的修改?数据库? 还有,就俩用户,没必要搞复杂了,只要把a用户的功能隐藏一下,就是b用户了 一般你得到源码的可能很校 如果想深入研究,请参考ThinkPad的rbac

当今较为常见的3种 web应用程序开发平台类型

Openbiz Cubi PHP开发框架

这显然是一个高耦合性的框架的代表,有点让开发人员“拎包入住”快捷酒店一样的的感觉。Openbiz Cubi 是一个应用平台式的开发框架。虽然与众多更加耳熟能详的框架相比 Openbiz Cubi 仍然是一匹黑马,但是还是一个十分值得推荐的框架。它自身基于Zend Framework构建,但是拥有自己独特的基于元数据的 MVC 和 ORM 逻辑,并采用Smarty和PHP模板 作为主要UI的模板引擎,所以如果你是Zend框架的玩家,别担心,Openbiz Cubi的代码也会同样让你很容易上手。

它不同于其他传统意义上的PHP框架,它具有一个类似JAVA的元数据引擎, 可以通过XML的方式来“描述”大多数对象,甚至通过XML的描述就可以实现数据的CRUD(增删读改)这些操作。如果你的业务需求仅仅是要实现一些简单 的数据CRUD操作,你甚至不需要去写什么PHP代码,XML就可以全部搞定。而你的PHP功夫可以通过他的Plugin-Service方式用于集中在 实现某些特殊的业务逻辑上。

Openbiz Cubi目 前还有一个叫做 Openbiz Appbuilder 的超级好用的代码生成工具,对于还不熟Openbiz的XML元数据的开发人员来说,Appbuilder 绝对是一个可以帮助你快速上手的利器,他通过图形界面的生成向导来帮你自动创建数据对象、表单对象、嵌入式服务,甚至整个应用程序的雏形。 按Openbiz的官方介绍来说,你只需要思考清楚你的应用程序的业务逻辑,剩下的代码工作就交给Openbiz Appbuilder来帮你搞定吧。

CakePHP 开发框架

如果你仍然需要编写面向PHP4兼容的代码,CakePHP 将是一个非常不错的选择, 在PHP 4 5的MVC式框架列表里面,CakePHP都曾经是最流行的。它还提供了很多种途径的技术支持(讨论组、留言板、IRC等)还有优秀的教程。 CackePHP是个很容易上手的框架,但是你并不容易在短短几周的时间就完全掌握它。

Zend Framework框架

Zend Framework 是面对一些较有经验的开发者和从底层构建一些企业级应用程序而设计的。(例如:宣称面向企业应用而设计的 Openbiz Cubi 就是基于Zend Framework框架之上而构建的。)该框架是高度模块化的。这意味着你可以按你的实际需要来引用Zend的代码。有些函数库甚至可以很容的被提取出来 单独使用(例如Zend_Gdata,这也是个低耦合性的特点)使用Zend框架,你不必非要遵从它的MVC架构,(虽然你最好能这么做),并且它还提供 了许多内建的高级功能用于完成与现有的web服务整合,多语言化和实现单元测试这些任务。

CodeIgniter

CodeIgniter 是一个PHP5.2+ 的MVC框架,它体积小巧切具有丰富的文档资源。通常被称为“初学者框架”,因为它相对容易试用和较短的学习曲线,此外CodeIgniter也是十分灵 活和强大的。该框架拥有一个非常庞大的社区支持。并且在社区里面很容易找到大量的CI函数库,你可以大胆的梦想, 也许你正需要做的事情在社区的某个交流,某个人已经把它实现了。

Symfony

Symfony 是最古老的PHP框架之一(相信你从他的网站风格上也发现这一点了),他同样也是转为企业级Web应用程序而设计的。然而,对于他所能提供的所有动力和性 能而言,它只拥有很小的体积并且非常容易配置在大多数php的主机环境中。由于他的年头最长久,你会很容易找到许多关于Symfony的教程、书记等资 料,对于新手来说,这绝对是件好事儿。

Symfony使用命令行代码生成工具来为项目快速生成所需的代码,这种方式也许对于某些开发人员来说是前所未闻的(在那个年头,也许 吧。。。)然后,他可以帮助你在很短的时间里完成代码并是他们可以运行。Symfony的网站上手机了大量的教程和范例代码,来帮助你熟悉掌握他们。

Yii Framework

Yii 是一个高度模块化,高性能的PHP5框架,专门为了Web应用程序而开发。Yii采用了大量的命令行生成工具,让你可以快速的生成一些代码,因此,他最适 合于喜欢在命令行的黑窗口上敲敲打打的人。所有这些代码生成工具意味着你需要记住更多的命令和参数,但是一点你做到了,你会发现,它们将大大减少你所要花 费的时间来设置和配置你的应用程序。

这种开发方式 非常类似于Openbiz Appbuilder所提供的向导式的代码生成方式,最大的不同点是Yii是基于命令行去生成代码,Openbiz Appbuilder是在图形界面上生成代码。

ThinkPHP

ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP 开发框架,遵循 Apache2 开源协议发布,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和 MVC 模式,融合了 Struts 的 Action 思想和 JSP 的 TagLib(标签库)、 RoR 的ORM映射和 ActiveRecord 模式, 封装了 CURD 和一些常用操作, 单一入口模式等,在模版引擎、缓存机制、认证机制和扩展性方面均有独特的表现。

Yii Framework

Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从 MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主题化,I18N和L10N,Yii提供了今日Web 2.0应用开发所需要的几乎一切功能。事实上,Yii是最有效率的PHP框架之一。

Yii是一个高性能的PHP5的web应用程序开发框架。通过一个简单的命令行工具 yiic 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发

phalcon

Phalcon是一套实现MVC架构的高性能PHP应用程序框架。初始版本发布于2012年11月,开放源代码并基于BSD授权条款。与其他大部分的PHP框架不同,Phalcon是以扩充的方式以C语言所编写,因此Phalcon的执行速度高过其他PHP框架,并且消耗更少的资源,根据官方的测试,Phalcon是目前世界上速度最快的PHP框架之一。[1]

我在学ThinkPHP里的RBAC的时候, [_ACCESS_LIST] 总是空的,高手给看一下

学习ThinkPHP的RBAC的时候, [_ACCESS_LIST] 总是空的解决方法

注意:

admin权限应该是所有权限,admin,lisi,wangwu等用户在顶级,后台应用上,一定要钩选中,次级,帖子管理等控制器级别,也要选中,最下级别的帖子列表选中,这样一来,[_Access_List]=Array{}数组就可以显示出来权限了,关键在于静态函数static function saveAccessList($authId=null)对getAccessList的封装,而getAccessList又对thinkphp框架中core下db.class.php的调用,其中level级别,通过$authId获取各个RBAC各个相关数据库表的操作,如果不钩选顶级应用,即使,次级控制器,最下级别的帖子列表钩选上,level也会没有,使得,[_Access_List]=Array{}数组打印为空!

请教关于RBAC权限管理

禁止的权限规则集

如果权限规则不是一个集合,因为只有与用户或角色关联的权限规则才允许访问,所以用户的权限是一个闭合区域,不想用户拥有某些权限时,只要不进行关联授权即可。如果权限规则使用通配符变成一个集合,那么用户的权限将变成一个开放区域,比如上面的论坛文章列表,假设论坛文章按照“版面/作者/文章标题”作为资源命名,那么将(阅览, 版面/作者/*)授权给某用户时,该用户允许阅览该版面下该作者的所有文章,假设现在有一种管理需求要求某用户可以阅览某版面下某作者除某几种文章标题外的所有文章,这样单纯的允许授权难以实现这个管理需求。

法律有许可和禁止的区别,那么权限管理也应该有许可和禁止两种授权,上面的不允许访问某几种文章标题的文章就是一种禁止规则,如果将这种禁止规则合并到允许规则中,就可以解决上面的问题。这就相当于画了一个大圈表示可以访问的区域,但是大圈里面的某些小圈是不可以访问的区域。这又带来一个问题,假设允许的和禁止的规则重叠,以谁为准?这个没有一个准则,不过基于安全性考虑,应该采用禁止优先,只要是禁止的集合,就算有允许的集合重叠,也不允许访问。

提高权限验证效率

使用关系数据库存储权限数据时,权限数据表更新和查询的操作频繁度通常小于1:9,也就是这是一个典型的OLAP系统,以查询为主,所以可以采用OLAP的优化策略进行优化,但是大多数优化策略都不具备实时性,如果兼顾实时性和效率要求,可以单独创建一个内存数据库,这个内存数据库只存放用户、资源、操作关联关系,也就是(用户, 操作, 资源)集合,如果用户通过角色关联到权限规则,那么将这些用户到权限规则的间接传递关系转变成直接传递关系保存。这个内存数据库就相当于权限数据的缓存,可以保证很高的查询效率,并且该内存数据库与权限管理保持同步,可以保证实时性。

安装和配置

附件是权限管理和权限验证的实现,也有用户管理的演示,不过用户管理很粗糙,实际使用需要做进一步开发,之所以没有开发相对完善的用户管理,是因为现在已有的系统通常都有完善的用户管理。

下面简单讲解安装配置,只在Tomcat5523+MySQL5037+jre1.5.0_12下测试过。

1. 下载rbac+profile.rar,解压,得到一系列文件,文件用途如下:

profile.admin.src.v1.jar 用户管理源代码

rbac.admin.src.v2.jar 权限管理源代码

rbac.auth.src.v2.jar 权限验证源代码

profile.v1.MySQL5.sql 用户管理用户数据表

profile.war 用户管理WEB系统

rbac.v2.MySQL5.sql 权限管理数据表

rbac.war 权限管理WEB系统

2. 创建数据库profile,使用UTF-8导入profile.v1.MySQL5.sql到profile,使用下面SQL创建用户root/1:

Insert into T_PROFILE(USER_ID, USER_NAME, USER_PASSWORD) values(‘1’, ‘root’, sha1(‘1’));

如果创建过先前SSO单点登陆的用户数据表,可以跳过这步,使用先前的数据表。

3. 创建数据库rbac,使用UTF-8导入rbac.v2.MySQL5.sql到rbac。

4. 拷贝profile.war和rbac.war到Tomcat5523/webapps/,会自动生成profile和rbac目录。

5. 参考配置单点登陆,因为权限管理和用户管理需要依赖单点登陆。

6. 下载相关依赖Java库:

下载cglib最新版本,拷贝asm.jar和cglib-2.1.3.jar到Tomcat/shared/lib。

下载c3p0最新版本,拷贝c3p0-0.9.1.1.jar到Tomcat/shared/lib。

下载mysql-connector最新版本,拷贝mysql-connector-java-5.0.4-bin.jar到Tomcat/shared/lib。

下载dwr最新版本,拷贝dwr2.0.1.jar到Tomcat/shared/lib。

7. 打开profile/ WEB-INF/classes/的rbac_auth.properties、sso_agent.properties、profile_admin.properties。

# 修改为合适配置

# rbac_auth.properties

rbac.auth.db.ds.c3p0.url=jdbc:mysql://localhost/rbac

rbac.auth.db.ds.c3p0.user=root

rbac.auth.db.ds.c3p0.password=1

# sso_agent.properties

sso.passport.login=

sso.passport.logout=

# profile_admin.properties

profile.admin.db.ds.c3p0.url=jdbc:mysql://localhost/profile

profile.admin.db.ds.c3p0.user=root

profile.admin.db.ds.c3p0.password=1

8. 打开rbac/WEB-INF/classes/下的rbac_admin.properties、rbac_auth.properties、sso_agent.properties。

# 修改为合适配置

# rbac_auth.properties

rbac.auth.db.ds.c3p0.url=jdbc:mysql://localhost/rbac

rbac.auth.db.ds.c3p0.user=root

rbac.auth.db.ds.c3p0.password=1

# sso_agent.properties

sso.passport.login=

sso.passport.logout=

# rbac_admin.properties

rbac.admin.profile.explorer=?

rbac.admin.profile.profile=?

rbac.admin.db.rbac.ds.c3p0.url=jdbc:mysql://localhost/rbac

rbac.admin.db.rbac.ds.c3p0.user=root

rbac.admin.db.rbac.ds.c3p0.password=1

发表评论

评论列表

  • 双笙七禾(2022-09-15 17:42:33)回复取消回复

    uts 的 Action 思想和 JSP 的 TagLib(标签库)、 RoR 的ORM映射和 ActiveRecord 模式, 封装了 CURD 和一些常用操作, 单一入口模式等,在模版引擎、缓存机制、认证机制和扩展性方面均有独特的

  • 寻妄傻梦(2022-09-15 11:00:35)回复取消回复

    in.src.v1.jar 用户管理源代码rbac.admin.src.v2.jar 权限管理源代码rbac.auth.src.v2.jar 权限验证源代码profile.v1.MySQL5.sql 用户管理用户数据表profile.war 用户管理WEB

  • 惑心风渺(2022-09-15 18:56:19)回复取消回复

    方法注意: admin权限应该是所有权限,admin,lisi,wangwu等用户在顶级,后台应用上,一定要钩选中,次级,帖子管理等控制器级别,也要选中,最下级别的帖子列表选中,这样一来,[_Access

  • 冢渊礼忱(2022-09-15 21:41:59)回复取消回复

    部分的PHP框架不同,Phalcon是以扩充的方式以C语言所编写,因此Phalcon的执行速度高过其他PHP框架,并且消耗更少的资源,根据官方的测试,Phalcon是目前世界上速度最快的PHP框架之一。[1]我在学ThinkPHP里的RBAC的时候, [_ACCESS_LIST] 总是空的,高手给

  • 晴枙情授(2022-09-15 16:54:39)回复取消回复

    规则中,就可以解决上面的问题。这就相当于画了一个大圈表示可以访问的区域,但是大圈里面的某些小圈是不可以访问的区域。这又带来一个问题,假设允许的和禁止的规则重叠,以谁为准?这个没有