phalcon: acl权限控制
目录控制:

public/index.php:
$di['aclResource']=function(){
return include_once '../app/config/frontbackAcl.php';
};
$di['dispatcher'] = function(){
$eventManager = new \Phalcon\Events\Manager();
$securyDeep = new SecurityDeep();
$eventManager->attach("dispatch", $securyDeep);
$dispatch = new \Phalcon\Mvc\Dispatcher();
$dispatch->setEventsManager($eventManager);
return $dispatch;
};
app/config/frontbackAcl.php:
return new \Phalcon\Config(array(
'Manager'=> array(
'rote'=>new \Phalcon\Acl\Role("Manager"),
'resource'=>array(
'Index'=> array("index", 'last', 'login', 'signup'),
'Register'=> array('index', 'doing'),
'Delete'=>array('index', 'delete')
)
),
'Operator'=>array(
'rote'=>new \Phalcon\Acl\Role("Operator"),
'resource'=>array(
'Index'=> array("index", 'last', 'login','signup'),
'Register'=> array('index', 'doing'),
)
)
));
securityDeep.php:
use \Phalcon\Mvc\User\Plugin,
\Phalcon\Events\Event,
\Phalcon\Mvc\Dispatcher;
class SecurityDeep extends Plugin { public function __construct() { } public function _getAcl()
{
$acl = new \Phalcon\Acl\Adapter\Memory();
//默认权限
$acl->setDefaultAction(\Phalcon\Acl::DENY);
//创建
$allResource = $this->_callAcl();
foreach($allResource as $key=>$value)
{
//创建角色,并将角色添加到acl
$acl->addRole($value['rote']);
//var_dump($value['rote']);
foreach($value['resource'] as $k=>$v)
{
//echo $k.'<br>';
foreach($v as $ky=>$vy)
{
//添加资源
$acl->addResource(new \Phalcon\Acl\Resource(strtolower($k)), $vy);
//添加访问权限
$acl->allow($key, strtolower($k), $vy);
// echo '|--'.$k.':'.$vy.'<br>';
}
}
}
return $acl;
}
public function _callAcl()
{
if($this->persistent->acl == null) {
$this->persistent->acl = $this->aclResource;
}
return $this->persistent->acl;
} public function beforeExecuteRoute(Event $event, Dispatcher $dispatcher)
{
$controller = $dispatcher->getControllerName();
$action = $dispatcher->getActionName();
$role = '';
if( $this->session->has('userInfo'))
{
$managerInfo = $this->session->get('userInfo');
$role = $managerInfo['role'];
}
if(empty($role)) $role = 'Operator';
$acl = $this->_getAcl();
$isAllowed = $acl->isAllowed($role, strtolower($controller), strtolower($action));
if(!$isAllowed)
{
//echo "no access";exit;
$dispatcher->forward(array(
'controller'=>'index',
'action'=>'error',
'params'=>array('msg'=>'no access')
));
} } }
那么,在indexController.php页面中,可以通过如下方法,获取params传过来的值:
public function errorAction()
{
//获取传过来的参数
$param = $this->dispatcher->getParams();
$msg = isset($param['msg'])? $param['msg'] : '' ; $this->view->web_title = '错误';
$this->view->pick('index/error');
}
phalcon: acl权限控制的更多相关文章
- phalcon: 目录分组后的acl权限控制
phalcon: 目录分组后的acl权限控制 楼主在做acl权限的时候,发现官方的acl只能针对未分组的目录,如下: app/ ___|./controller ___|./logic ___|./p ...
- zookeeper的ACL权限控制
ACL:Access Control List 访问控制列表 1. 简介 0.概述 ACL 权限控制,使用:scheme:id:perm 来标识,主要涵盖 3 个方面: 权限模式(Scheme): ...
- Linux系统——ACL权限控制及特殊权限
ACL权限控制 ACL(access control list),可以提供除属主.属组.其他人的rwx权限之外的细节权限设定 ACL的权限控制 (1)User 使用者 (2)Group 群组 (3)M ...
- 1.ZooKeeper ACL权限控制
参考:https://blog.csdn.net/liuxiao723846/article/details/79391650 ZK 类似文件系统,Client 可以在上面创建节点.更新节点.删除节点 ...
- ZooKeeper学习之路(五)—— ACL权限控制
一.前言 为了避免存储在Zookeeper上的数据被其他程序或者人为误修改,Zookeeper提供了ACL(Access Control Lists)进行权限控制.只有拥有对应权限的用户才可以对节点进 ...
- ZooKeeper系列(五)—— ACL 权限控制
一.前言 为了避免存储在 Zookeeper 上的数据被其他程序或者人为误修改,Zookeeper 提供了 ACL(Access Control Lists) 进行权限控制.只有拥有对应权限的用户才可 ...
- 面试题解析|ACL权限控制机制
ACL(Access Control List)访问控制列表 包括三个方面: 一.权限模式(Scheme) 1.IP:从 IP 地址粒度进行权限控制 2.Digest:最常用,用类似于 usernam ...
- ACL 权限控制机制 ?
UGO(User/Group/Others) 目前在 Linux/Unix 文件系统中使用,也是使用最广泛的权限控制方式.是一种粗 粒度的文件系统权限控制模式. ACL(Access Control ...
- ACL 权限控制机制 ?
UGO(User/Group/Others) 目前在 Linux/Unix 文件系统中使用,也是使用最广泛的权限控制方式.是一种粗 粒度的文件系统权限控制模式. ACL(Access Control ...
随机推荐
- MDI窗体容器和权限设置.avi
一.MDI窗体容器 MDi窗体是装Form的容器.平常Form(窗体)就是平常展示的最高级别,但是MDI比Form还高级.它可以让其它窗体在它的内部打开,无法超出它的范围 1 创建:将某个窗体的属性: ...
- 3094 寻找sb4
3094 寻找sb4 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description sb有一天和sml吵架了,她 ...
- 通过两根RS232连接两台电脑
把RS232的有5脚那边放下面,最左边是GND,第二三是TXD和RXD,两个RS232反接,然后两个usb连接电脑就可以通信了
- 进程间通信之打开关闭一个exe文件
一.打开 1.WinExec("F:\\QQ\\Bin\\QQ.exe",SW_SHOW); 注意:'\'需要改成'\\',阻塞 2. STARTUPINFO si; PROCES ...
- Duilib实现圆形头像控件
.h文件 #ifndef __UIHEADICON_H__ #define __UIHEADICON_H__ /* 名称:圆形头像控件(派生CButtonUI类) */ class CHeadUI: ...
- mysql DATE_ADD DATE_SUB
一.DATE_ADD() 函数向日期添加指定的时间间隔. DATE_ADD(date,INTERVAL expr type)date 参数是合法的日期表达式.expr 参数是您希望添加的时间间隔. t ...
- BZOJ 1006 神奇的国度(弦图的染色数)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1006 题意:给定一个弦图,求最小染色数.就是用最小数目的颜色进行染色使得任意两个相邻的节 ...
- Android 程序打包和安装过程
APP程序打包与安装的流程: APP的安装过程:
- php cookie详解
各参数详解 注意: 1 当一个Cookie被删除时,它的值在当前页在仍然有效的.原因是删除cookie实际也是设置cookie, 只是把cookie的值设为‘’或者null,或者把cookie的 ...
- glyphicons-halflings-regular.ttf 404
这个是用bootstrap框架时我遇到的问题,个人解决过程如下: ① 这个资源不是我手动引用的,是bootstrap.min.css文件间接调用的. ② 默认的路径是css文件路径是project/c ...