PDA

View Full Version : استفاده از چند login (حل شد)



engmmrj
چهارشنبه 23 بهمن 1392, 13:23 عصر
من در پروژه ام احتیاج به استفاده از چند Login رو دارم ولی در Yii نمیشه این کارو انجام داد !
باید سیستم Login خودم بنویسم ؟

MMSHFE
چهارشنبه 23 بهمن 1392, 14:29 عصر
یعنی چی چند لاگین؟ منظورتون رو دقیقتر توضیح بدین.

engmmrj
چهارشنبه 23 بهمن 1392, 14:40 عصر
یک لاگین در user یک لاگین در admin

masato
پنج شنبه 24 بهمن 1392, 08:57 صبح
دو تا layout لاگین درست کن

engmmrj
پنج شنبه 24 بهمن 1392, 10:25 صبح
بحث layout نیست !
الان من میخوام برای هر کدام یک accessRules بزار که AccessRules ادمین میره به لاگین یوزر

MMSHFE
پنج شنبه 24 بهمن 1392, 12:18 عصر
میتونید فیلتر لاگین خودتون رو بنویسید و به اکشنها اعمال کنید.

engmmrj
پنج شنبه 24 بهمن 1392, 12:50 عصر
الان به شکل زیر عمل کردم ولی در لینک زیر گفتن UserIdentity هم چین قایلیتی داره ولی نمی دونم چطوری کار میکنه!
http://stackoverflow.com/questions/8554770/yii-how-to-authenticate-using-two-different-tables
یا
http://stackoverflow.com/questions/15439358/define-two-different-login-process-in-one-app

public function filters() {

return array(

'CheckLogin - login'
);
}

engmmrj
یک شنبه 27 بهمن 1392, 18:57 عصر
ضعف Yii تو همچین پروژه هایی معلوم میشه!

MMSHFE
یک شنبه 27 بهمن 1392, 20:17 عصر
باز شما بدون مطالعه مستندات و بررسی کامل شرایط، اسم باگ و ضعف و... آوردین؟! :چشمک:
ببینید، مشکل از Yii نیست بلکه نیاز شما طبیعی نیست. معمولاً سیستم مدیریت کاربران اینطوریه که یک لاگین مشترک وجود داره و کاربران بعد از لاگین، سطح دسترسیهاشون بررسی میشه که Yii بخوبی با RBAC و Simple Access این قابلیت رو پوشش میده. اما شما میخواین که دو لاگین مختلف داشته باشین و طبیعیه که نه Yii و نه هیچ فریمورک استاندارد دیگری، چنین قابلیتی رو پیش بینی نکرده ولی بهرحال همونطور که گفتم، ابزارش در اختیارتون هست. میتونید فیلتر دلخواه خودتون رو طراحی کنید و سر راه اکشنها بگذارین (مثل accessControl) و توی بخش مدیریت مشخص کنید که اگه این فیلتر نتیجه false داد، کاربر به صفحه لاگین مدیریت هدایت بشه. اونجا هم فقط کاربرانی که دسترسی مدیریتی دارن رو اجازه لاگین بدین. اینکه شما از چیزی اطلاع ندارین، به معنای عدم وجودش نیست.

MMSHFE
یک شنبه 27 بهمن 1392, 22:13 عصر
این لینک (http://stackoverflow.com/questions/15439358/define-two-different-login-process-in-one-app) هم که خوب توضیح داده.

engmmrj
دوشنبه 28 بهمن 1392, 08:35 صبح
این لینک (http://stackoverflow.com/questions/15439358/define-two-different-login-process-in-one-app) هم که خوب توضیح داده.
درست شد . بازم Yii از این امتحان سر بلند بیرون آمد :لبخندساده:

engmmrj
دوشنبه 28 بهمن 1392, 08:36 صبح
این دو کد زیر باعث شد درست بشه , حالا سوال من اینه اون دو کد وظیفشون چیه ؟


Yii::app()->setComponent('frontendUser', Yii::app()->user);
Yii::app()->setComponent('user', Yii::app()->adminUser);

MMSHFE
دوشنبه 28 بهمن 1392, 09:16 صبح
شما دو تا کامپوننت توی config/main.php تعریف کردین که یکی frontendUser هست (کاربر عادی) و یکی user (کاربر مدیر) و با این دستورات، میگین که هر کامپوننت باید با کدوم Object پر بشه. اینطوری وقتی میگین Yii::app()->user یعنی کاربر مدیر و وقتی میگین Yii::app()->frontendUser یعنی کاربر معمولی. درصورت تمایل میتونید اسامی کامپوننتهاتون رو تغییر بدین ولی بهرحال خود Yii سشنهاشون رو هم مدیریت میکنه و مثلاً Yii::app()->user->setFlash فقط پیام رو برای کاربر مدیر ست میکنه. حالا باز بیاین بگین ضعف Yii در پروژه ها!

engmmrj
سه شنبه 29 بهمن 1392, 21:07 عصر
شما دو تا کامپوننت توی config/main.php تعریف کردین که یکی frontendUser هست (کاربر عادی) و یکی user (کاربر مدیر) و با این دستورات، میگین که هر کامپوننت باید با کدوم Object پر بشه. اینطوری وقتی میگین Yii::app()->user یعنی کاربر مدیر و وقتی میگین Yii::app()->frontendUser یعنی کاربر معمولی. درصورت تمایل میتونید اسامی کامپوننتهاتون رو تغییر بدین ولی بهرحال خود Yii سشنهاشون رو هم مدیریت میکنه و مثلاً Yii::app()->user->setFlash فقط پیام رو برای کاربر مدیر ست میکنه. حالا باز بیاین بگین ضعف Yii در پروژه ها!
به نظرم این ضعف Yii هست ! چرا باید این همه کار اضافه بکنیم که میخوایم دو تا login داشته باشیم یا چرا باید هواسمون باشه که آیا session باز هست که داریم از setFlash استفاده میکنیم !!ما داریم از framework استفاده میکنیم این وظیفه framework هست که بطور auto session رو باز کنه ! auto session تو CodeIgniter اعمال شده ولی تعجب داره که تو Yii این کار انجام نشده !

afshin9032
سه شنبه 29 بهمن 1392, 23:32 عصر
به نظرم این ضعف Yii هست ! چرا باید این همه کار اضافه بکنیم که میخوایم دو تا login داشته باشیم یا چرا باید هواسمون باشه که آیا session باز هست که داریم از setFlash استفاده میکنیم !!ما داریم از framework استفاده میکنیم این وظیفه framework هست که بطور auto session رو باز کنه ! auto session تو CodeIgniter اعمال شده ولی تعجب داره که تو Yii این کار انجام نشده !

اگر API ها رو نگاهی بندازید قابلیت session auto start به صورت پیش فرض فعال هست .
وقتی میشه با تعریف دو سه تا متغیر این مشکل چند login را حذف کرد ، چرا باید صفحات اضافی برای هر login‌ ایجاد کرد که مدیریتش هم پیچیده تر بشه .

MMSHFE
چهارشنبه 30 بهمن 1392, 15:05 عصر
به نظرم این ضعف Yii هست ! چرا باید این همه کار اضافه بکنیم که میخوایم دو تا login داشته باشیم یا چرا باید هواسمون باشه که آیا session باز هست که داریم از setFlash استفاده میکنیم !!ما داریم از framework استفاده میکنیم این وظیفه framework هست که بطور auto session رو باز کنه ! auto session تو CodeIgniter اعمال شده ولی تعجب داره که تو Yii این کار انجام نشده !
این ابداً ضعف نیست. الان یک کامپوننت اضافه تر تعریف کردن، اونهم از روی همون کلاس User موجود، شد این همه کار؟ اینکه پیغام Flash برای کاربر تعریف میشه و وقتی کاربری لاگین نکرده، قاعدتاً پیامی هم وجود نداره، خیلی پیچیده است؟ اینکه CI یک کار غیر اصولی و غیر بهینه انجام داده دلیل نمیشه Yii هم اینکار رو انجام بده. سشن وقتی که بهش نیاز نیست (کاربر لاگین نکرده) نباید بی دلیل شروع بشه چون سربار اضافه میگذاره و مصرف ترافیک رو بالا میبره و سرعت Load رو پایین میاره. شعار Yii همیشه Performance بوده و اصولی انجام دادن کارها. اینکه شما توی یک پروژه دو تا لاگین میخواین، غیر اصولیه. باید یک لاگین باشه و سطح دسترسی تعیین کنید. بگین فلان کاربر مدیره و فلان کاربر نیست. یعنی توی بخش لاگین مدیریت هم همون کامپوننت کار میکنه ولی فقط کاربران خاصی اجازه لاگین داره. شما دارین با فریمورک کار میکنید تا کارها اصولی انجام بشه نه اینکه فریمورک براتون نوشابه هم باز کنه!