Yii Framework Forum: تعیین دسترسی ادمین - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

تعیین دسترسی ادمین

#1 User is offline   Manee 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 103
  • Joined: 23-September 12

Posted 11 March 2013 - 12:03 AM


من یه پروژه جدید باز کردم و لاگین رو بر مبنای یوزری که از داخل خود پروژه ساختم ایجاد کردم. الان که میخوام یوزرها رو مدیریت کنم خطای زیر رو میده این سطح دسترسی رو چطوری ایجاد کنم؟ یعنی یوزرم رو برای لاگین ادمین کنم که دسترسی داشته باشم


 You are not authorized to perform this action.


	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index','view'),
				'users'=>array('*'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('create','update'),
				'users'=>array('@'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array('admin','delete'),
				'users'=>array('admin'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}


انگار پیدا کردم ولی چطوری باید ازش استفاده بکنم؟

$auth->assign('admin', 1);

0

#2 User is offline   Nabi 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 210
  • Joined: 22-February 12
  • Location:Ahwaz

Posted 13 March 2013 - 12:43 AM


assign که نوشتی برای زمانیه که شما از Role-Based Access Control استفاده میکنید.

ابتدا بایستی با کد مشابه زیر یک role درست کنید:
$auth=Yii::app()->authManager;
$role=$auth->createRole('roleName');


(این کد رو معمولاً فقط یکبار در زمان ایجاد پروژه اجرا میکنید)


بعد اون role رو به کاربر مورد نظرتون نسبت بدید:
$auth=Yii::app()->authManager;
$auth->assign('roleName','userName');


(این کار رو در زمانی که در مدیریت میخواهید دسترسی به کاربر اعطا کنید استفاده میکنید و دفعات بعد نیاز نیست)

سپس با کد زیر مشخص کنید که کاربرانی که دارای role با نام roleName هستند به اکشن های مورد نظر دسترسی داشته باشند.

	public function accessRules()
	{
		return array(
				array('allow',
						'roles'=>array('roleName'),
						'actions'=>array('admin','delete'),

				),
				array('deny',
						'users'=>array('*'),
				),
		);
	}


در جاهای مختلف برنامه ما بین کدها هم اگر نیاز به چک کردن دسترسی کاربر بود به این روش میتونید کنترل کنید:

if(Yii::app()->user->checkAccess('roleName'))
{
	// delete the post
}

توجه داشته باشید که Role-Based Access Control بر پایه یا فایل یا دیتایس عمل میکنه که لازمه قبلاً تنظیمات اون رو انجام داده باشید.

توضیح بیشتر:
http://www.yiiframew...-access-control

اینم یه اکستنشن مفید در این رابطه:
http://www.yiiframew...tension/rights/

روش بالا برای یک کار بزرگ و اصولی با سطح دسترسی های متنوع است که قابلیت امکان سطوح دسترسی Role, Task, Operation و Child های مربوطه را میدهد.

اما اگر پروژه خیلی کوچک است و ارزش استفاده از روش فوق را ندارد از روش مختصر و مفید Access Control Filter استفاده کنید که در همین حد خلاصه میشود که مشخص است:


array('allow',
	'actions'=>array('publish'),
	'users'=>array('@'),
	'expression'=>'isset($user->role) && ($user->role==="editor")'
),

توضیح بیشتر این روش:
http://www.larryullm...-control-lists/






وقتی پیغام میذارید، بی زحمت متنتون رو انتخاب کنید و این دو تا کار ناقابل رو هم انجام بدید:
1. از اون بالا RTL رو انتخاب کنید.
2. فونت رو هم Tahoma بگذارید.
که چشمون در نیاد.
دمت گرم!

www.IranPHP.ir
1

#3 User is offline   Shahcheraghean 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 478
  • Joined: 12-December 12
  • Location:Mashhad, IRAN

Posted 13 March 2013 - 01:21 AM

دست شما درد نکنه.
حالا اگه از این روش role base نخواهیم بریم چی.
یه راه ساده تر هم به نظرم هست. اگه اشتباه نکنم با filterها بود، دقیقا یادم نیست.
اون چیه؟

www.shgn.ir
www.shgn.ir/yii-framework/
yii2.swsco.ir
In a world without any fences or walls,Who needs Gates or Windows!
0

#4 User is offline   Nabi 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 210
  • Joined: 22-February 12
  • Location:Ahwaz

Posted 13 March 2013 - 01:35 AM

View PostShahcheraghean, on 13 March 2013 - 01:21 AM, said:

دست شما درد نکنه.
حالا اگه از این روش role base نخواهیم بریم چی.
یه راه ساده تر هم به نظرم هست. اگه اشتباه نکنم با filterها بود، دقیقا یادم نیست.
اون چیه؟



معلوم شد کامل نخوندیش Posted Image
یه بار از آخر به اول بخونش Posted Image


وقتی پیغام میذارید، بی زحمت متنتون رو انتخاب کنید و این دو تا کار ناقابل رو هم انجام بدید:
1. از اون بالا RTL رو انتخاب کنید.
2. فونت رو هم Tahoma بگذارید.
که چشمون در نیاد.
دمت گرم!

www.IranPHP.ir
0

#5 User is offline   Manee 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 103
  • Joined: 23-September 12

Posted 13 March 2013 - 02:11 AM

این کد زیر رو کجا و چطوری بزارم. هر کاری میکنم میذارم صفحه سفید میشه

$auth=Yii::app()->authManager;
$role=$auth->createRole('admin','mahdi');

0

#6 User is offline   Nabi 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 210
  • Joined: 22-February 12
  • Location:Ahwaz

Posted 13 March 2013 - 02:14 AM

View PostManee, on 13 March 2013 - 02:11 AM, said:

این کد زیر رو کجا و چطوری بزارم. هر کاری میکنم میذارم صفحه سفید میشه

$auth=Yii::app()->authManager;
$role=$auth->createRole('admin','mahdi');



بر پایه دیتابیس داری کار میکنی یا فایل؟

CPhpAuthManager or CDbAuthManager ?

یکی از اینا رو باید کانفیگ کرده باشی


وقتی پیغام میذارید، بی زحمت متنتون رو انتخاب کنید و این دو تا کار ناقابل رو هم انجام بدید:
1. از اون بالا RTL رو انتخاب کنید.
2. فونت رو هم Tahoma بگذارید.
که چشمون در نیاد.
دمت گرم!

www.IranPHP.ir
0

#7 User is offline   Manee 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 103
  • Joined: 23-September 12

Posted 13 March 2013 - 02:23 AM

من دیتابیس یه یوزر دارم که ساختمش . یعنی بعد ایجاد پروژه داخل خود فرمی که ساختم یوزر درست کردم

0

#8 User is offline   Nabi 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 210
  • Joined: 22-February 12
  • Location:Ahwaz

Posted 14 March 2013 - 01:41 AM


منظورم پروژه خودتون نبود.

منظورم Role-Based Access Control بود که باید یا بر اساس فایل یا دیتابیس تنظیم بشه، لینک هر یک رو هم گذاشتم.

اگر در تنظیم هر یک مشکلی داشتی، اگر بلد باشم درخدمتم.




وقتی پیغام میذارید، بی زحمت متنتون رو انتخاب کنید و این دو تا کار ناقابل رو هم انجام بدید:
1. از اون بالا RTL رو انتخاب کنید.
2. فونت رو هم Tahoma بگذارید.
که چشمون در نیاد.
دمت گرم!

www.IranPHP.ir
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users