PDA

View Full Version : سوال در مورد مدیریت نقش ها



amirniknam
پنج شنبه 08 فروردین 1387, 09:19 صبح
من تاپیک های قبلی راجب به این موضوع رو دیدم اما هیچکدوم در این مورد توضیح نداده بودند من می خوام به صورت داینامیک نقش ایجاد کنم و این نقش ها به صفحات سایت اعمال بشه یعنی مدیر بتونه یک نقش جدید ایجاد کنه که مثلا اجازه دسترسی به یکسری صفحات رو بده و همین طور مانع دسترسی کاربر اون نقش به صفحات دیگه بشه
من قبلا به طور غیر ساختیافته این کار رو انجام دادم به طوریکه هر بار نقش کاربر و اختیاراتش رو دستی بررسی می کردم اگر نقشش اجازه دسترسی نداشت Redirect می کردمش حالا می خوام ببنیم ASP.NET راه حل مناسبی برای این کار داره تا مثل وقتی که تو web.config محدوه های دسترسی رو تعریف می کنیم و خودش خودکار مدیریت امنیت رو به عهده میگیره این کار رو بتونه انجام بده (در ضمن دوست ندارم فایل web.config رو تغییر بدم چون این کار باعث راستارت شدن برنامه و ایجاد مشکلات زیادی میشه)

Behrouz_Rad
پنج شنبه 08 فروردین 1387, 12:27 عصر
یک کلاس پایه ایجاد کن که از Page ارث می بره و روال OnLoad اش رو Override کن. در OnLoad شرط بررسی مجوز دسترسی به صفحه ی درخواست شده رو بررسی کن. در صورت عدم داشتن مجوز، کاربر رو به صفحه ای دلخواه رهنمون کن.
صفحات دیگه به جای Page باید از کلاسی که ایجاد کردی ارث ببرن.

موفق باشید.

amirniknam
پنج شنبه 08 فروردین 1387, 12:50 عصر
ممنون از راهنمایی اما همونطور که گفتم من مشابه این کار رو انجام داده بودم علت سوال من این هست که من می خوام این مدیریت توسط من صورت نگیره چون اگر خود ASP.NET این کار رو انجام بده باعث می شه پیاده سازی خیلی از کار های دیگه ساده صورت بگیره مثلا دیگه نیازی به کنترل منو نیست و ASP.NET نمایش صفحاتی رو که کاربر اجازه ورود به اون هارو نداره حذف می کنه یا برای مدیریت Web Part ها دیگه به کدنویسی اضافی نیازی نیست
همچنین از این طریق می شه user control ها رو به سادگی مدیریت کرد . در یک برنامه با اجزای زیاد این کار باعث می شه که عملا پیاده سازی تمامی کلاس های مربوط به امنیت توسط برنامه نویس انجام بشه که این کار بسیار وقت گیر و میشه گفت نادرست هست
آیا امکان داره این مشکل با پیاده سازی دوباره Membership provider حل بشه در واقع به نوعی مجوز ها در دیتا بیس ذخیره بشه که امکان تغییر اون ها به راحتی ممکن باشه من مطلبی رو در این مورد ندیدم اگر شما اطلاعی دارید لطفا راهنمایی بفرمایید

Behrouz_Rad
پنج شنبه 08 فروردین 1387, 13:34 عصر
در صورت اولیه ی سوالت فقط در مورد محدودیت دسترسی به صفحات صحبت کردی و بحثی در مورد محدودیت دسترسی به سایر اجزا نبود!

مکانیزم تعبیه شده ی خاصی مثل Membership Provider یا FormsAuthentication بدین منظور در ASP.NET وجود نداره. وجودش هم منطقی به نظر نمی رسه. بحث نمایش یا عدم نمایش آیتم های خاص بر مبنای سطح دسترسی کاربر، یک راهبرد سفارشی است که برنامه نویس اون رو پیاده سازی می کنه.

موفق باشید.

amirniknam
پنج شنبه 08 فروردین 1387, 14:37 عصر
در صورت اولیه سوال برای اینکه مطلب تا حدودی روشن بشه از دسترسی به صفحات صحبت کردم شاید می بایست بهتر توضیح می دادم. لطفا به عکس ضمیمه نگاه کنید فرض کنید هر چک باکس برای مدیریت یک ماژول استفاده میشه در این جا ما می توانیم 36 نقش داشته باشیم (البته بعضی از آن ها منطقی نیستند من فقط برای مثال نوشتم) من می توانم نقش ها رو بررسی کنم که اجازه دسترسی به ماژولی را دارند یا نه اما مشکل این جاست که اگر بعدا بخواهم ماژولی به برنامه اضافه کنم با یستی در دیتابیس تغییراتی ایجاد کنم میخوام ببینم یک راخ حل منطقی و ساختیافته برای این کار چی هست ؟

Alireza_Salehi
پنج شنبه 08 فروردین 1387, 17:29 عصر
این مطلب را ببینید روش جالبی استفاده کرده:
http://microsoft.apress.com/asptodayarchive/74047/web-applications-and-role-based-content-rendering

amirniknam
پنج شنبه 08 فروردین 1387, 18:34 عصر
این مطلب را ببینید روش جالبی استفاده کرده:
http://microsoft.apress.com/asptodayarchive/74047/web-applications-and-role-based-content-rendering

ممنون البته این مورد هم به نوعی یک راه ابتکاری جالب برای پیاده سازی این موضوع است که تا حدودی هنوز مشکلات مطرح شده را دارد به هر ترتیب این طور که از مباحث برداشت کردم میشه نتیجه گرفت که این کار بایستی توسط برنامه نویس کنترل بشه من دنبال راه حلی بودم که به جای اینکه تنظیمات در فایل web.config باشند در دیتا بیس ذخیره شوند و ASP.NET به جای مراجعه به فایل web.config سراغ جداول مربوطه به ASP.NET رفته و بقیه مراحل خودکار انجام شوند
به هر صورت از کمک شما دوستان سپازگزارم دکمه حل شد رو نمی تونم بزنم چون واقعا این تاپیک نمیتونه به عنوان یه راحل ارائه بشه