2010/05/28, 02:25 PM
با سلام
بنا به درخواست دوستان و نیز اهمیت کامپوننت ACL قصد دارم در این تاپیک نحوه استفاده از آن را در حد وسعم شرح دهم.
قسمت اول
ACL و یا Access Control List برای مدیریت کنترل دسترسی در پروژه استفاده میشود. ACL از دو بخش درخواست کننده(ARO) و درخواست شونده (ACO) تشکیل می شود.
ARO و ACO
ARO ها همان کاربران و یا گروه های کاربری هستند که قرار است مجوز دسترسی به ACO ها را دریافت کنند و یا دسترسی آنها به ACO ها محدود شود.
ACO ها را شما انتخاب میکنید که چه چیزی باشند. درصورتی که کامپوننت ACL را به همراه کامپوننت Auth استفاده میکنید باید تمام کنترلر ها و اکشن های پروژه را به لیست ACO ها اضافه کنید.
ضمناً کامپوننت ACL باید قبل از کامپوننت Auth در کنترلر فراخوانی شود.
قبل از هر چیز لازم است جداول ذخیره سازی ACO ها و ARO ها را در دیتابیس ایجاد کنید.
برای ایجاد خودکار ACO ها از روی پروژه میتوانید از کد موجود در این صفحه استفاده کنید.
خوب در ادامه یک مثال از ACL ارائه خواهد شد.
بنا به درخواست دوستان و نیز اهمیت کامپوننت ACL قصد دارم در این تاپیک نحوه استفاده از آن را در حد وسعم شرح دهم.
قسمت اول
ARO و ACO
ARO ها همان کاربران و یا گروه های کاربری هستند که قرار است مجوز دسترسی به ACO ها را دریافت کنند و یا دسترسی آنها به ACO ها محدود شود.
ACO ها را شما انتخاب میکنید که چه چیزی باشند. درصورتی که کامپوننت ACL را به همراه کامپوننت Auth استفاده میکنید باید تمام کنترلر ها و اکشن های پروژه را به لیست ACO ها اضافه کنید.
ضمناً کامپوننت ACL باید قبل از کامپوننت Auth در کنترلر فراخوانی شود.
کد PHP:
var $components = array('Acl','Auth');
قبل از هر چیز لازم است جداول ذخیره سازی ACO ها و ARO ها را در دیتابیس ایجاد کنید.
کد:
--
-- Table structure for table `acos`
--
CREATE TABLE `acos` (
`id` int(10) NOT NULL auto_increment,
`parent_id` int(10) default NULL,
`model` varchar(255) default NULL,
`foreign_key` int(10) default NULL,
`alias` varchar(255) default NULL,
`lft` int(10) default NULL,
`rght` int(10) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=114 ;
-- --------------------------------------------------------
--
-- Table structure for table `aros`
--
CREATE TABLE `aros` (
`id` int(10) NOT NULL auto_increment,
`parent_id` int(10) default NULL,
`model` varchar(255) default NULL,
`foreign_key` int(10) default NULL,
`alias` varchar(255) default NULL,
`lft` int(10) default NULL,
`rght` int(10) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
-- --------------------------------------------------------
--
-- Table structure for table `aros_acos`
--
CREATE TABLE `aros_acos` (
`id` int(10) NOT NULL auto_increment,
`aro_id` int(10) NOT NULL,
`aco_id` int(10) NOT NULL,
`_create` varchar(2) NOT NULL default '0',
`_read` varchar(2) NOT NULL default '0',
`_update` varchar(2) NOT NULL default '0',
`_delete` varchar(2) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `ARO_ACO_KEY` (`aro_id`,`aco_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;برای ایجاد خودکار ACO ها از روی پروژه میتوانید از کد موجود در این صفحه استفاده کنید.
خوب در ادامه یک مثال از ACL ارائه خواهد شد.