확장 api_와의 ACL 테이블 aros_acos, 코드는CakePHP의 사용자 정의 ACL 권한 부여, AROS는 & I CakePHP를, 나는 ACL을 사용하여 사용자에게 권한을 부여 사용자 지정 권한을 구현하기 위해 노력하고 사용하여 편안하고 API를 개발하고
<?php
App::uses('BaseAuthorize', 'Controller/Component/Auth');
class ApiAuthorize extends BaseAuthorize {
public function authorize($user, CakeRequest $request) {
$allowed = false;
$Acl = $this->_Collection->load('Acl');
list($plugin, $userModel) = pluginSplit($this->settings['userModel']);
$action = $this->action($request);
$cacheName = 'permissions_' . strval($user['id']);
if (($permissions = Cache::read($cacheName, 'permissions')) === false) {
$permissions = array();
Cache::write($cacheName, $permissions, 'permissions');
}
if (!isset($permissions[$action])) {
$User = ClassRegistry::init($this->settings['userModel']);
$User->id = $user['id'];
$allowed = $Acl->check($User, $action);
$permissions[$action] = $allowed;
Cache::write($cacheName, $permissions, 'permissions');
$hit = false;
} else {
$allowed = $permissions[$action];
$hit = true;
}
return $allowed;
}
}
과 같이 보입니다
나는 같은 (croogo를 사용하여 개발)의 웹 사이트에 대한 데이터베이스 및 API를 사용하고 그래서 내 데이터베이스는 이미 API를 위해 내가 api_acos
같은 api_ 확장하여 만든 ACL 테이블을 오전 있도록 acos
, 웹 사이트의 aros
& aros_acos
테이블, api_aros
& api_aros_api_acos
새로운 스키마가 여기에서 사용자 정의 ACL 클래스를
CREATE TABLE IF NOT EXISTS `api_acos` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(10) DEFAULT NULL,
`model` varchar(255) DEFAULT '',
`foreign_key` int(10) unsigned DEFAULT NULL,
`alias` varchar(255) DEFAULT '',
`lft` int(10) DEFAULT NULL,
`rght` int(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `api_acos_api_aros` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`api_aro_id` int(10) unsigned NOT NULL,
`api_aco_id` int(10) unsigned NOT NULL,
`_create` char(2) NOT NULL DEFAULT '0',
`_read` char(2) NOT NULL DEFAULT '0',
`_update` char(2) NOT NULL DEFAULT '0',
`_delete` char(2) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `api_aros` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(10) DEFAULT NULL,
`model` varchar(255) DEFAULT '',
`foreign_key` int(10) unsigned DEFAULT NULL,
`alias` varchar(255) DEFAULT '',
`lft` int(10) DEFAULT NULL,
`rght` int(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
사용하고 있습니다 https://github.com/FriendsOfCake/Authorize/blob/master/Controller/Component/Acl/HabtmDbAcl.php
내 질문은 어디에이다 내가 내 새 데이터베이스 테이블을 사용하는 방법 (api_acos
을 api_aros
& api_aros_api_acos
) ACL 조회를 원하십니까? 제발 사용자 정의 ACL 인증 구현에 대한 참조를 취할 수있는 코드를 알려주십시오.