QeePHP的ACL设置

QeePHP的ACL设置又开始用 qeephp 开发了 个人感觉这个框架越用越觉得强大 完全不亚于 python 的 django 框架 唯一的遗憾是 qeephp 文档的完整性是如此之差 没办法 国内的 不扯没用的 进入正题 今天用了 ACL 访问控制 就一个字 方便 默认情况下 所有的访问控制规则都写在 acl yaml php 中 该文件的结构也很简单 控制器名称 这里一定要顶格 nbsp all

又开始用qeephp开发了,个人感觉这个框架越用越觉得强大,完全不亚于python的django框架。唯一的遗憾是qeephp文档的完整性是如此之差……没办法,国内的。。

  不扯没用的,进入正题,今天用了ACL访问控制。就一个字,方便。

  默认情况下,所有的访问控制规则都写在acl.yaml.php中,该文件的结构也很简单:

    控制器名称:  #这里一定要顶格

      allow: 允许使用的角色    #缩进一定要使用两个空格,一个朋友的工程里面使用了四个空格,好像也可以的样子。不要使用Tab键。角色名前要使用一个空格分隔,多个角色使用“,”分隔

  还可以使用actions语法分别指定各个方法。具体写法见例子。

  举个例子:

值得一提的是还可以使用deny来只禁止特定用户。

在设置的时候一直遇到一个问题,解决了好久好久,原来这个文件不支持两个allow,必须使用逗号分隔多个用户,写到一条规则里。如:allow: ‘MEMBER, ADMIN’

关于角色:

ACL_NO_ROLE 是一个 QeePHP 预定义的值,表示不具备任何角色的用户。

ACL_HAS_ROLE,用来表示任何角色。

还可以使用

ALL_CONTROLLERS:

  deny: ACL_EVERYONE

指定一个全局的规则

下面引用下qeephp-quick-start中的配置,因为今天写的配置没有那个例子全。

users:

  allow: ACL_HAS_ROLE

  actions:

    register:

      allow: ACL_NO_ROLE

    login:

      allow: ACL_NO_ROLE 

tasks:

  allow: ACL_HAS_ROLE 

default:

  allow: ACL_EVERYONE 

ALL_CONTROLLERS:

  deny: ACL_EVERYONE

#注:不要复制上面的代码,以免缩进错误。

配置完了千万不要忘记只有启用acluser插件才能够使用acl控制。

下面对acl插件的配置进行简介,在适当地方引用qeephp的API。

启用acluser插件其实很简单,只要稍微修改下自动生成的model文件夹中的类就可以了。需要更改的类就是你的用户类(即:含有用户名和密码的类)

大概在22行附近就可以找到配置代码,做如下就该就可以了(下面的代码是笔者项目里的配置,22-33行):

对配置做少许解释:’behaviors’ => ‘acluser’,       指定了使用acluser插件

下面几行就是对插件的设置:

下面引用qeephp的API就可以说明这些设置了,希望对读者有所启发。

acluser 行为插件支持下列设置选项:

  • encode_type: 密码的加密方式,默认值为 crypt。

    该选项可以设置为 cleartext, md5、crypt、sha1、sha2,­或任何有效的 PHP 全局函数名。其中,cleartext 表示不加密密码。

    如果要使用自定义的加密方法,可以指定 encode_type 设置为一个回调函数,例如:

    'encode_type' => array('MyClass', 'encryptString');
  • username_prop: 指示在模型中使用哪一个属性­来保存的用户名,默认值为 username。

    由于 acluser 插件需要通过用户名来查询对­象,因此需要指定正确的属性名称。

  • password_prop: 指示在模型中使用哪一个属性­来保存用户密码,默认值为 password。

    acluser 插件在验证用户登录、更新密­码时需要用到该设置指定的属性。

  • roles_enabled: 是否启用对关联角色的支持,默认值为 false。

    当启用关联角色支持后,可以通过 aclRoles() 方法来获得用户对象关联的角色信息。

    关联角色支持需要设置下列选项:

    • roles_prop: 角色信息映射到用户模型的哪­一个属性之上。默认值为 roles。
    • roles_name_prop: 指示角色模型使用哪一个属性­保存角色名称,默认值为 name。
  • acl_data_props: 指示在使用 aclData() 方法时,返回的数组中要包含哪些属性。

    默认值为 uesrname。

    要指定多个属性,用“,”分­割,例如“username, email”。不过不管指定什么属性,

    aclData() 方法返回的数组中总是包含一个名为 id 的键,其键值是用户的 ID。

  • update_login_auto: 是否在成功调用 validateLogin() 后自动更新用户信息,默认值­为 false。

    当 update_login_auto 为 true 时,可以指定下列选项:

    • update_login_cou­nt_prop: 记录登录次数的属性,不指定则不更新;
    • update_login_at_prop: 记录登录时间的属性,不指定则不更新
    • update_login_ip_prop: 记录登录 IP 的属性,不指定则不更新
  • register_save_auto: 是否在新建用户对象时,自动­保存下列信息,默认值为 false。
    • register_ip_prop: 记录用户的 IP 地址)
    • register_at_prop: 记录创建时间
  • unique_username: 指示是否检查用户名的唯一性,默认值为 true。

    当该设置为 true 时,将不允许创建同名用户。

    并在尝试创建同名用户时抛出 AclUser_Dupli­cateUsernameEx­ception 异常。

默认情况下,所有的访问控制规则都书写在 acl.yaml 中,该文件的结构如下:

控制器名称: allow: 允许使用该控制器的角色

LookingFor::find(‘year>=1991 and year<=1995 and sex='女' and money>4000′)->get(1);”
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212756.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午7:20
下一篇 2026年3月18日 下午7:20


相关推荐

  • er图和uml图_数据库表结构er图

    er图和uml图_数据库表结构er图ER图:实体-联系图(Entity-RelationDiagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,ER图提供了表示实体(即数据对象)、属性和联系的方法,用来描述现实世界的概念模型构成E-R图的基本要素是实体、属性和联系,其表示方法为:实体型:用矩形表示,矩形框内写明实体名;属性:用椭圆形或圆角矩形表示,并用无向边将其与相应的实体连接起来;多值属性由双线连接;主属性名称下加…

    2025年12月11日
    4
  • Qt Creator的下载和安装

    Qt Creator的下载和安装Qt和QtCreator的区别Qt是C++的一个库,或者说是开发框架,里面集成了一些库函数,提高开发效率。QtCreator是一个IDE,就是一个平台,一个开发环境,类似的比如说VS,也可以进行Qt开发,当然VS中的Qt是作为一个插件插入VS平台的。下载QtCreator下载地址1:https://www.qt.io/download这是官网下载地址,选择开源opensou…

    2022年5月16日
    41
  • js二维码生成器_url生成二维码

    js二维码生成器_url生成二维码二维码又称QRCode,是一个近几年来移动设备上很流行的一种编码方式它比传统的一维码(条形码)能存更多的信息,也能表示更多的数据类型。按照一定规律排列组成的几何图形构成,它巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念生活中的应用也是非常的广泛人们的生活方方面面都离不开二维码,而且她也给人们带来了极大的便利。<br><br>(二维码自动识别)二维码有哪些优缺点:优点:1.高密度编码,信息容量大。 2.编码范围广。 3.容错能力强,..

    2022年10月10日
    4
  • VC++ CString 与 int 类型转换「建议收藏」

     摘自:http://blog.csdn.net/a951084634/article/details/6961133 CString_temp="100";int_int;_int=atoi(_temp);======================================================================CSt…

    2022年4月6日
    43
  • 最短路径dijkstra算法精品代码(超详解)

    最短路径dijkstra算法精品代码(超详解)一:简介  这个算法用于解决图中单源最短路径问题。所谓单源节点是指给定源节点,求图中其它节点到此源节点的最短路径。如下图所示:给定源节点a,求节点b到a的最短距离。(图来自于参考资料2)那么如何寻找?还是以上图为例:1)初始化:设定除源节点以外的其它所有节点到源节点的距离为INFINITE(一个很大的数),且这些节点都没被处理过。…

    2022年5月18日
    39
  • 学习双拼必看:双拼输入法的心得以及快速入门办法

    学习双拼必看:双拼输入法的心得以及快速入门办法1.简单介绍一下双拼2.总共18种双拼方案3.15种双拼方案的具体映射4.顺便提一下双拼口诀的事情5.总结不同平台选择的方案双拼(也称双打)是一种建立在拼音输入法基础上的输入方法,可视为全拼的一种改进,它通过将汉语拼音中每个含多个字母的声母或韵母各自映射到某个按键上,使得每个音都可以用两个按键打出,极大地提高了拼音输入法的输入速度。这种声母或韵母到按键的对应表通常称之为双…

    2022年6月23日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号