PDA

View Full Version : تغییر سطح دسترسی role ها به صورت داینامیک



mehrdad201
سه شنبه 20 آذر 1386, 17:21 عصر
سلام

خواستم بپرسم آیا در دات نت 2 این امکان هست که به صورت داینامیک بشه سطح دسترسی role ها رو تغییر داد.

منظورم از داینامیک اینه که صفحه ای رو در برنامه داشته باشیم که یوزر اصلی (مثلا ادمین) در اونجا مشخص کنه که role شماره یک باید به صفحات 1 و 2 دسترسی داشته باشه و role شماره 2 باید به صفحه 2 و 3 دسترسی داشته باشه.


میدونم که این کار رو از طریق asp.net configuration انجام میدن اما ما میخوایم در سیستممون بخشی داشته باشیم که مثل این قسمت عمل کنه. (البته فارسی شده)

لطفا دوستانی که در این مورد اطلاعات دارند راهنمایی کنند.

mehrdad201
چهارشنبه 21 آذر 1386, 13:47 عصر
کسی نیست ما رو راهنمایی کنه ؟!

scorpion_man
چهارشنبه 21 آذر 1386, 14:12 عصر
سلام

خواستم بپرسم آیا در دات نت 2 این امکان هست که به صورت داینامیک بشه سطح دسترسی role ها رو تغییر داد.

منظورم از داینامیک اینه که صفحه ای رو در برنامه داشته باشیم که یوزر اصلی (مثلا ادمین) در اونجا مشخص کنه که role شماره یک باید به صفحات 1 و 2 دسترسی داشته باشه و role شماره 2 باید به صفحه 2 و 3 دسترسی داشته باشه.


میدونم که این کار رو از طریق asp.net configuration انجام میدن اما ما میخوایم در سیستممون بخشی داشته باشیم که مثل این قسمت عمل کنه. (البته فارسی شده)

لطفا دوستانی که در این مورد اطلاعات دارند راهنمایی کنند.
راهش استفاده از provider هاست
کار نسبتا سختی هست ولی میشه انجامش داد
sitemap provider هست که نقشه ساییتونو به شکل dynamic بکشه البته اینجا باید یه فیلدی هم برای ثبت role های مجاز برای دسترسی داشته باشید که , از هم جدا میشن
سپس فعال کردن security این provider تو web.config تو قسمت اعلان provider هست
همه این کارا باعث میشه فقط صفحه به کاربرانی که role خاصی رو که برای اون صفحه تعریف شده رو ببینن گفتم این فقط نمیذاره صفحات رو تو site map و منو هاتون نبینن ولی اگه مستقیم
آدرس رو تو آدرس بار بزنن میتونن ازش رد بشن برای اینکه این اتفاق هم نیفته و فقط کاربرانی که اون رول رو دارن فقط بتونن وارد صفحه بشن سه راه دارید
1- طراحی یه provider سفارشی که درخواستهای کاربران رو مدیریت کرده و فقط به کاربرینی اجازه دسترسی بده که مجازن
2- استفاده از global.ascx که میشه تو رویداد begin_request که اسم دقیقش یادم نیست استفاده کرد البته تا حالا اینو تستش نکردم ولی احتمال 90% جواب بده
3- طراحی یه کلاس که زمان load صفحات role های مجاز رو چک بکنه
که این راه 3 از راهه 1 راحتتر هست ولی کار حرفه ای نیست ولی خوب جواب میده
موفق باشید

mehrdad201
چهارشنبه 21 آذر 1386, 14:23 عصر
ممنون دوست عزیز

با اقای راد هم صحبت میکردم ایشون گفتن از formsauthertication میشه استفاده کرد...

در این مورد اطلاعاتی دارید ؟!؟؟؟؟؟؟؟؟؟؟؟؟

Behrouz_Rad
چهارشنبه 21 آذر 1386, 16:30 عصر
Role کاربر رو در کوکی ذخیره کن.
یا از یک HttpModule استفاده کن یا در روال AuthorizeRequest فایل Global.asax سطح دسترسی رو با استخراج Role از کوکی بررسی کن.

موفق باشید.

scorpion_man
چهارشنبه 21 آذر 1386, 18:12 عصر
Role کاربر رو در کوکی ذخیره کن.
یا از یک HttpModule استفاده کن یا در روال AuthorizeRequest فایل Global.asax سطح دسترسی رو با استخراج Role از کوکی بررسی کن.

موفق باشید.
با سلام به دوست عزیز آقای بهروز
البته این provider ها که گفتم کلا همشون از httpmodule ها ارث بری دارن و کلا با اون سیستم کار میکنن ولی تا جایی که من فهمیدم ایشون میخوان برای هر صفحه جداگانه role ها رو چک بکنن و باید از httpmodule ها یا provider استفاده بکنن بالاخره هر دو تا راه صحیح هستند
موفق باشید

scorpion_man
چهارشنبه 21 آذر 1386, 18:21 عصر
ببخشید این یادم رفته بود بگم
این راهم میشه استفاده کنی چند ماه پیش یه مقاله می خوندم تو msdn این راهم خوبه
ساخت یک custom web form که خیلی ساده هست که از همون web form ارث بری داره و می تونی تو begin_request تش کارایی که میخوای انجام بدی یعنی همون چک کردن role ها رو
بعدش دیگه باید تو اعلان هر صفحه این module رو register@> ثبتش کنی و به جای tag form تو
قسمت html صفحه از tagi که ثبت کردی استفاده بکنی
موفق باشی

mehrdad201
چهارشنبه 21 آذر 1386, 20:46 عصر
Role کاربر رو در کوکی ذخیره کن.
یا از یک HttpModule استفاده کن یا در روال AuthorizeRequest فایل Global.asax سطح دسترسی رو با استخراج Role از کوکی بررسی کن.

موفق باشید.

ممنون. جناب راد

این رول AuthorizeRequest قبل از beginrequest فراخوانی میشه؟

در ضمن اگه کاربر کوکی رو یلاک کرده باشه آیا مشکلی پیش میاد ؟!؟!!؟!

Behrouz_Rad
چهارشنبه 21 آذر 1386, 22:02 عصر
این رول AuthorizeRequest قبل از beginrequest فراخوانی میشه؟
خیر. بعد از اون فراخوانی میشه.

اگه کاربر کوکی رو یلاک کرده باشه آیا مشکلی پیش میاد ؟!؟!!؟!
بله مشکل پیش میاد. اما این مورد خیلی به ندرت اتفاق می افته. طوری که احتمال وقوعش نباید مانع از تصمیم شما برای استفاده از کوکی بشه.

موفق باشید.