PDA

View Full Version : دادن سطح دسترسي هاي مختلف به افراد با رول هاي يکسان



bftarane
پنج شنبه 30 آذر 1391, 21:51 عصر
سلام.
من مي خوام کاري که در اين تاپيک پست 1 گفته رو انجام بدم.
http://barnamenevis.org/showthread.php?346449
در پست 4 هم اين جملات پياده سازيشون نمي دونم چطور مي تونه انجام بشه

رخی از کاربران در صفحه X در پوشه مدیریت به بخش ویرایش و حذف دسترسی دارند.
برخی از کاربران در صفحه X در پوشه مدیریت تنها به بخش نمایش دسترسی دارند.

مثلاً دو تا کاربر داريم
هر دو نقش Admin رو دارن
بنابراين به صفحه مديريت کاربران دسترسي دارن
خوب اگه بخواهيم به يکيشون فقط حق حذف کاربر بديم
به يکيشون فقط حق مثلاً ويرايش کاربر

دو تا دکمه هم در صفحه مديريت کاربران داريم به نام حذف و ويرايش
حالا چطور بايد اين کار رو انجام بديم؟
منظورم اينه که وقتي ديگه صحبت از دسترسي به صفحه نيست بلکه صحبت از چطور بگم دسترسي به يک دکمه يا يک دستور در يک صفحه هست چه کار بايد کرد؟

r_s1389@yahoo.com
جمعه 01 دی 1391, 10:15 صبح
سلام
شما باید برای هر کام از دکمه هایی که میخوای سطح دسترسی براش تعریف کنی یک فیلد در پایگاه داده درست کنی که دو تا مقدار true یا false بگیره
موفق باشین

raziee
جمعه 01 دی 1391, 11:00 صبح
با درود

در مورد سیستمی که در حال حاظر طراحی کردید بیشتر صحبت کنید.
مثلا بگید کنترل این سطح دسترسی رو به چه شیوه ای کنترل میکنید(فارغ از Action ها).


در ساده ترین شکل ممکن شما 3 نقش امنیتی رو تعریف کنید

مدیران
مدیران ویرایش
مدیران حذف

کسی که دارای نقش مدیران باشه میتونه صفحه مربوطه رو ببینه.
کسی که دارای نقش مدیران ویرایش باشه میتونه دکمه ی ویرایش رو ببینه (در سمت سرور هم حتما بررسی کنید و بعد عملیات مربوطه رو انجام بدید)
و ....

bftarane
جمعه 01 دی 1391, 11:10 صبح
خوب با روش شما فکر کنم بايد
يه جدول به اسم ControlsName با فيلدهاي زير رو بايد داشته باشيم
اسم کنترل
visibleStatus
Permision
role
رو داشته باشم و در رويداد لود رول و پرميشن کاربري که وارد شده رو به دست بيارم و در جدول Controls برم بگردم کنترل هايي که اين نقش و پرميشن رو دارن visibleStatus اشون رو واکشي کنم و به خاصيت visible کنترل ها اختصاص بدم درسته؟
مثلاً به دکمه ويرايش رولهاي x, y اي که پرميشن Edit دارن دسترسي دارند.
بعد کاربر X الآن وارد صفحه شده چون نقشش بهش اجازه مي داده
حالا مي ريم پرميشن هاي اين کاربر رو چک مي کنيم اگه پرميشن Edit داشت دکمه Edit بايد Visible اش True بشه براش.

پس من يه نتيجه اي مي گيرم اين که ما مي تونيم به ادمين اجازه بديم رول رو به صورت دايناميک ايجاد کنه
ولي
پرميشن ها نمي تونن دايناميک باشن يعني اين پرميشن ها بايد از قبل توسط برنامه نويس در نظر گرفته بشن مثلاً Edit، Delete ، ايجاد کاربر جديدو ...
به نظرتون اين درسته؟

مثلاً من در ابتدا فقط يه نقش Admin خودم ايجاد کرده باشم و به ادمين اين نقش رو بدم و حالا ادمين مي تونه هر چند تا نقش دلش خواست ايجاد کنه و به کاربران دلخواه اين نقش رو انتساب بده مثلاً يه صفحه داريم

به اسم ايجاد خبر يه نقش به اسم AddNews ايجاد کنه و کاربراني که اين نقش بهشون داده ميشه مي تونن وارد اين صفحه بشن.
ولي ادمين نمي تونه خودش پرميشن خاصي ايجاد کنه بعداً.

bftarane
جمعه 01 دی 1391, 11:17 صبح
آقاي raziee بعد از اين که پست رو فرستادم پست شما رو ديدم.
ولي لطفاً پست بالا رو بخونيد نظرتون رو بگيد.
من سيستم خاصي طراحي نکردم. در کل مي خوام يه سيستم دايناميک مديريت نقش رو بتونم پياده کنم.

مثلاً مي خوام يه صفحه پرسش و پاسخ داشته باشم که مثلاً بعضي کاربرا بتونن فقط سوالات کاربراي هم سطحشون رو ببينن.
بعضي ها بتونن ويرايش هم کنن سوالات ديگران رو و از اين قبيل کارها.
هنوز چون براي خودمم گنگه دارم روش تحقيق مي کنم مي خوام بدونم از کجا بايد شروع کرد چي کار بايد کرد؟
من سيستم تشخيص هويت پيشرفته سايت هاتولرن رو استفاده کردم.
و فعلاً فقط جدول کاربران، نقشها و صفحات رو دارم که در جدول صفحات نقش هر صفحه مشخص ميشه.

raziee
جمعه 01 دی 1391, 17:39 عصر
اگه شما تنها یک بخش دارید که نیاز به مجوز های مجداگانه داره ساده تر اینه که از دو گروه مجزا استفاده کنید.
اما اگه ساختار ماژولار دارید(ماژول هایی که در صفحه قرار میگیرند و از قبل شناختی نسبت به مجوز ها ندارید و مدیر سیستم میتونه اون ها رو تعریف کنه) میتونید از جداول زیر ایده بگیرید.
97040

در این حالت میتونید هم مجوز های مربوط به صفحه رو بررسی کنید و هم مجوز های مربوط به ماژول های درون صفحه.

اسکریپت های تولید جداول:
97041

Kurdia
جمعه 01 دی 1391, 19:15 عصر
یه فیلد ب نام flgadmin اضافه کن ب اطلاعات اعضا و مقدار رهیش کن اگر 1 بود به همه چی دستر سی داره
اگر 2 بود به الف ب ج د دسترسی داره
اگر 3 بود ب الف ب ج
اگر 4 بود به الف ب
و ...

mahdidabaghi
شنبه 02 دی 1391, 00:20 صبح
سلام من واسه مدیزیت کاربران اینجوری عمل میکنم که 4 تا تیبل در نظر میگیرم:
1)جدول نقش ها
2)جدول کاربران
3)جدول ماژول ها
4)جدول دسترسی یا همون permission
که این جدول اخریه یه جدل واسط بین جداول بالایه و روش کار اینه که شما ابتدا یه نقش تعریف میکنید و میگید این نقش رو فلان ماژول ها(مثل ماژول لینک ها و پست ها و...) اجازه اعمال (خواندن و ویرایش و حذف و ثبت) رو داره.
حلا شما موقع تعریف کاربر(user ) میاید و میگید این کاربر چه نقشی داره (نقش هم که از قبل با توجه به توضیحات بالا ایجاد شده و امکانات دسترسی اون هم مشخص شده)
امیدوارم متوجه شده باشید و کارتون رو راه بندازه

Kurdia
یک شنبه 03 دی 1391, 13:54 عصر
اگه شما تنها یک بخش دارید ...


مهندس رضیئی عزیز در ابن ک این روش استاندارده شکی ندارم
چیزی ک مسلمه باید تا می تونید پیچیدگی رو پایین بیارید
می شه مقایسه کوچکی بین دو روش متداول ک شما و من معرفی کردیم انجام بدین و مزایا و معایب هر کدوم رو بگید

raziee
یک شنبه 03 دی 1391, 19:08 عصر
مهندس رضایی عزیز در ابن ک این روش استاندارده شکی ندارم
چیزی ک مسلمه باید تا می تونید پیچیدگی رو پایین بیارید
می شه مقایسه کوچکی بین دو روش متداول ک شما و من معرفی کردیم انجام بدین و مزایا و معایب هر کدوم رو بگید



یه فیلد ب نام flgadmin اضافه کن ب اطلاعات اعضا و مقدار رهیش کن اگر 1 بود به همه چی دستر سی داره
اگر 2 بود به الف ب ج د دسترسی داره
اگر 3 بود ب الف ب ج
اگر 4 بود به الف ب
و ...
با درود.
بنده رضیئی هستم نه رضایی.
به طور خلاصه : شاید در یک پروژه ی کوچیک که نقش ها و محدوده ی مجوز ها کم باشند روش شما قابل استفاده باشه اما نه بیشتر.
سیستمی رو فرض کنید که دارای تعداد کاربران زیاد ؛ دارای سطوح دسترسی مختلف و از قبل تعیین نشده باشد.
هیچ صفحه ای از قبل طراحی نشده و تمام صفحات بوسیله ی مدیران سیستم ایجاد می شوند.
صفحه از ماژول های مختلفی تشکیل شده که هر کدوم از این ماژول ها نیاز به داشتن سطوح دسترسی متفاوتی هستند و تمام این ماژول ها از قبل آماده نشده یا به عبارتی دارای امکان نصب ماژول بر روی سیستم هست.
نیاز های سطوح دسترسی:

مدیر سیستم می بایست بتواند گروه های کاربری را ایجاد کند و کاربران دلخواه را به گروه های مربوطه الصاق کند.
مدیر سیستم باید بتواند برای هر صفحه مجوز های مختلفی را صادر کند
مدیر سیستم باید بتواند برای هر ماژول موجود در صفحه مجوز های مختلفی را صادر کند

به عنوان مثال صفحه ای به نام اخبار :
تمامی کاربران میتوانند صفحه ی اخبار را مشاهده کنند.
تنها کاربران عضو میتوانند بر روی خبر ها نظر ارسال کنند.
تنها گروه کاربران خبرگذاران میتوانند خبر جدید به صورت پیش نویس اضافه کنند و حق انتشار ندارند.
تنها گروه کاربران ویراستاران میتوانند خبرهای پیش نویس را ویرایش کنند.
تنها گروه کاربران مدیران ارشد میتوانند خبرهای پیش نویس را تائید نهایی و منتشر کنند.
تنها گروه کاربران مدیران عالی میتوانند خبرهای منتشر شده را حذف کنند.


ممکن هست هر یک از ماژول ها سطوح دسترسی متفاوتی را داشته باشند که از قبل مشخص نشده باشد.