نقطه ویرگول;

هر از گاهی از هر چیزی

هر از گاهی از هر چیزی

آموزش Auth در cakephp

يكشنبه, ۷ آذر ۱۳۸۹، ۰۲:۱۲ ب.ظ
احراز هویت برای (Authentication) سایت های داینامیک از ملزومات محسوب می شه. در تمامی سایت ها برای ورود به بخش مدیریت باید از مدیر احراز هویت بشه و هر کسی اجازه ی ورود به بخش مدیریت رو نداشته باشه. در این مطلب شما تا حدودی با ساختار کیک آشنا شدید. cakephp ابزار بسیار مناسبی برای توسعه ی سایت های داینامیک محسوب می شه. و در این زمینه ابزار فوق العاده ای داره که به راحتی می تونید از کاربران احراز هویت کنید.
برای شروع کار شما می تونید کیک پی اچ پی نسخه ی ۱.۳.۶ رو دانلود کنید.
راهنمای کیک آموزش خیلی کاملی داده در این مورد که به راحتی می تونید در اینجا پیداش کنید.
یه جدول به نام یوزر درست می کنید با این مشخصات:
CREATE TABLE IF NOT EXISTS `users` (
`id` int(6) NOT NULL AUTO_INCREMENT,
`user` varchar(64) COLLATE utf8_persian_ci NOT NULL,
`pass` varchar(64) COLLATE utf8_persian_ci NOT NULL,
`email` varchar(255) COLLATE utf8_persian_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=3 ;
فایل app_controller.php رو باز می کنید و کدهای زیر رو درش کپی می کنید:

class AppController extends Controller {
var $components = array('Session', 'Auth');
برای کار با کامپوننت Auth در کیک پی اچ پی شما باید این خط رو به app_controller خودتون اضافه کنید. حالا دقت کنید که به محض اینکه شما این خط رو به app_controller اضافه می کنید کیک به صورت پیشفرض اجازه نمی ده که شما سایت رو ببینید و ریدایرکتتون می کنه به کنترلر users و اکشن login. و قاعدتن چون این اکشن رو ندارید خطا خواهد داشت.
البته می تونید آدرس لاگین کامپوننت Auth رو به این صورت عوض کنید:
$this->Auth->loginAction = array('admin' => false, 'controller' =>'anything', 'action' => 'login');
توابع مورد نیاز برای کنترولر یوزر رو خودتون اضافه می کنید. ولی برای login یه تابع می نویسید به این صورت:
 function login(){

}

بعد توی شاخه ی view و شاخه ی users یه فایل با نام login.ctp می سازید با محتوای زیر:

 echo $form->create('User');
echo $this->Form->input('user');
echo $this->Form->input('pass');
echo $form->end('ارسال');
?>
خب. حالا صفحه رو ریفرش کنید و ببینید که صفحه ی لاگین دیده می شه.
در فایل app_controller.php یه تابع اضافه می کنید به این صورت:
 function beforeFilter()
{
}
تابع beforeFilter قبل از فراخوانی هر تابعی ابتدا فراخوانی می شه. در تمامی کنترولر ها هم می تونید از این تابع استفاده کنید. ولی در فایل app_contriller.php قبل از فراخوانی هر تابعی در هر کنترولری این تابع فراخوانی می شه.
داخل فایل این کد رو اضافه می کنید:
 $this->Auth->fields = array('username' => 'user','password' => 'pass');
با این کار ما به کامپوننت Auth فیلدهای username و password خودمون رو تعیین می کنیم.
 $this->Auth->loginRedirect = array('controller' => 'controllerName' , 'action' => 'actionName');
$this->Auth->logoutRedirect = array('controller' => 'controllerName2' , 'action' => 'actionName2');
در این بخش هم اکشن های لاگین و لاگ اوت رو تعیین می کنید. یعنی وقتی کاربر لاگین کرد به کجا هدایت بشه و وقتی لاگ اوت کرد به کجا هدایت بشه.
 $this->Auth->loginError = 'نام کاربری یا کلمه ی عبور اشتباه است. دوباره تلاش کنید';
$this->Auth->authError = 'شما اجازه ی دسترسی به این بخش را ندارید';
در این بخش هم خطاهایی که نمایش داده می شن رو تعیین می کنید. بخش اول خطای لاگین و بخش دوم خطای دسترسی.
خوب:
حالا وقتی کاربر لاگین می کنه به تمامی اکشن ها و کنترولر های شما دسترسی داره. اما به صورت عادی بازدیدکننده ها هم باید بدون لاگین کردن به بخش هایی از سایت دسترسی داشته باشن.
برای نمونه شما یه کنترولر به نام post دارید و اجازه می دید اکشن index رو تمامی بازدید کننده های سایت ببینند. برای این کار می تونید از این متد استفاده کنید:
 $this->Auth->allow('actionName');
و برای محدود کردن از این کد استفاده کنید:
 $this->Auth->deny('actionName');
از علامت ستاره هم برای همه ی اکشن ها استفاده کنید:
 $this->Auth->deny('*');
بازدیدکننده های سایت می تونند به اکشن هایی با نام actionName دسترسی داشته باشند بدون اینکه لاگین کنند. دقت کنید که اکشن actionName در تمامی کنترولر ها قابل دسترس خواهد بود.
به طور معمول شما باید دسترسی همه اکشن ها رو deny کنید و فقط اونایی رو که باید allow کنید. برای نمونه یه همچین کدی خواهید داشت:
 $this->Auth->deny('*');
$this->Auth->allow('contac');
$this->Auth->allow('view');
$this->Auth->allow('test');
خیلی هم خوب
به همین راحتی به جای نوشتن کلی کد می تونید از یه Authentication خیلی خوب و امن و راحت لذت ببرید.
کیک بخورید که در آن فایده هاست :D
پ.ن:
این نکته رو توجه کنید که وقتی کامپوننت Auth رو فعال می کنید هنگام افزودن کاربر جدید خود این کامپوننت پسورد رو هش می کنه. برای اینکه کاربر بسازید برای لاگین باید کامپوننت رو فعال کنید و دسترسی به تمام بخش ها رو allow کنید. بعد که کاربر ساختید می تونید deny کنید.
امیدوارم که براتون مفید بوده باشه
موفق باشید
موافقین ۰ مخالفین ۰ ۸۹/۰۹/۰۷
مرتضی فتحی

auth

کیک پی اچ پی

cakephp

نظرات  (۵)

۰۷ آذر ۸۹ ، ۱۷:۳۶ محمد صالح
عالی بود. اما کاش از ابتدا این فریم ورک رو آموزش میدادید حتی اگر از مقالات دیگران استفاده کرده بودید.
چشم
حتمن این کار رو می کنیم
ممنون
مطلب بسیار ارزشمندی بود. موفق باشید.
اتفاقاً من دارم رو این فریم ورک develop می کنم ، فریم ورک خیلی خوبیه..
۰۲ شهریور ۹۰ ، ۰۶:۰۹ آموزش cakephp - چک کردن نام کاربری | PHPDevelopers.ir
[...] از این در این سایت مطالبی برای آشنایی با کیک پی اچ پی و آموزش های دیگری از این فریم ورک قرار گرفته است. امروز قصد داریم آموزش بسیار ساده و [...]

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی