PDA

View Full Version : rbca سیستم دسترسی بر اساس نقش



hooman.pro
شنبه 25 مرداد 1393, 21:51 عصر
سلام
فیلم های آموزشی آقای شهرکی رو دیدم و الان یکسری ابهامات واسم تو این rbca به وجود اومده پروژه هم گرفتم که با همین yii پیاده کنم لطفا کمک کنید:

اولا وقتی تو جدول auth_item یه آیتم با تایپ 2 اضافه میکنم یعنی تسک دقیقا چه کاربردی داره؟ و فرقش با حالتی که نوع 0 میگذاریم چیست؟

من میخوام یه پروژه انجام بدم که سه نوع یوزر داره : 1- استاد 2-دانشجو 3-ادمین
اولین سوال جدول یوزر کاملا یکسان باشد یا سه جدول جدا؟!! اگر یکسان جداول دیگری برای فیلد های غیر مشترک در نظر بگیرم و امکان خاص هر یوزر با سطوح دسترسی پیاده کنم؟
حالا میخوام دانشجو فقط سوال بپرسه و معلوم کنه ک کدوم استاد ج بده (یعنی بر اساس مشخص کردن دانشجو دسترسی استاد به ج دادن به یک سوال باز میشود)
اما از اونجایی که کسی که پروژه رو میخواد زیاد حرفاش استیبل نیست ممکنه بگه هر استادی بتونه ج بده اما خوب چیزی که 100 درصد معلومه هیچ دانشجویی نباید بتونه ج بده


دوما آیا این که میگم درست هست یا نه توی پروژه trackstar پروژه فیلم آموزشی آقای شهرکی:
میخواهیم شخصی که کامنت ایجاد میکند دسترسی آپدیت را فقط ایشان داشته باشد، پس باید به جدول tbl_auth_item آیتمی با type 0 با نام update_comment تعریف کنیم و یک رول جدید comment_owner ایجاد کنیم و آیتم را فرزند این رول کنیم
و سپس یک تیبل دیگر tbl_comment_user_assigment شبیه تیبلی که برای رابطه پروژه با یوزر ایجاد کردیم و رکورد دیگری در تیبل tbl_auth_assignment با بیزینس رول خاص خود؟!!

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

hooman.pro
یک شنبه 26 مرداد 1393, 07:46 صبح
یک نکته دیگه این که استاد صفحه خاص خودش رو داره که عکس و توضیحات و سوابق و ...
دانشجو هیچ صفحه ای نباید داشته باشه که دیگران ببینند در هد یه پنل تغییر پسورد که فقط خودش میبینه
ادمین هم همین طور صفجه قابل مشاهده برای دیگران نداره و پنل مدیریتی خاص خودش رو داره
حالا اینا همه تو یه جدول یوزر باشن؟ یه فیلد تو جدول یوزر بزارم که رول مشخص کنه؟ یا اینکه بعد از ثبت نام هر کدام از طریق صفحه خاص ثبت نام تو جداول rbca نقش استاد ادمین و دانشجو رو تعریف کنم؟

من قبلا از این قبل پروژه ها انجام دادم و اگر دوستان لطف کن بگن تو معماری yii به کدوم روش این کار ها انجام بشه ممنون میشم و میتونم کم کم استارت پروژه رو بزنم

MMSHFE
دوشنبه 27 مرداد 1393, 15:05 عصر
اگه سیستم کاری RBAC رو متوجه نمیشین تا وقتی به تسلط کافی روش نرسیدین لازم نیست ازش استفاده کنید. همون روش عادی جدا کردن کاربران رو برحسب جدول مربوطه درنظر بگیرین. خیلی از سیستمها به این پیچیدگی و انعطاف که RBAC ارائه میده نیاز ندارن. من خودم تا حالا فقط توی 2 تا پروژه ازش استفاده کردم که واقعاً موردنیاز بود و بقیه رو با همون روشهای عادی تفکیک کردیم.

hooman.pro
دوشنبه 27 مرداد 1393, 21:04 عصر
خیر متوجه شدم اما سوالم طولانی بود که از حوصله خارج بود جواب دادنش حقم داشتین خودمم شاید ج این سوالو نیمدادم در عوض یک سوال کوتاه میپرسم:

فرق task , role, operation دقیقا چیست؟ آیا وجود task فقط برای سلسه مراتب هست؟ یا اینکه کاربرد خاصی دارد؟

MMSHFE
دوشنبه 27 مرداد 1393, 21:21 عصر
Role کلاً به نقشها میگن مثل ادمین و مدیر بخش و کاربر عادی و...
Task به وظایفی که نقشها میتونن داشته باشن میگن مثل مدیریت پستها و...
Operation به عملیات جزئی داخل نقشها میگن مثلاً مدیریت پستها میتونه شامل مشاهده و ویرایش و حذف و تأیید و عدم تأیید و... باشه

حالا هر نقش اگه یک Task داشته باشه یعنی تمام Operationهای اون رو داره و ازطرفی یک نقش میتونه یک Task رو بطور کامل نداشته باشه ولی یکی از Operationهای اون رو داشته باشه. برای مثال، نقش کاربر عادی کلیه عملیات وظیفه مدیریت پستها رو نداره ولی به عملیات مشاهده پستها که یکی از عملیات داخلی این وظیفه هست، دسترسی داره. امیدوارم خوب توضیح داده باشم.