View Full Version : پیاده سازی رول در یک پروژ
shahramasp
یک شنبه 20 خرداد 1386, 17:44 عصر
سلام
اساتید سوال
یک پروژه در دست دارم که قرار است کاربران عضو سایت از طرف مدیر سایت تعیین دسترسی شوند .
به عنوان مثال کاربر X به بخش های اخبار و مقلات دسترسی داشته باشد ولی به سایر صفحات و لینکها دسترسی نداشته باشد .
چطور پیاده سازی کنم
متشکرم
aidinwashere
یک شنبه 20 خرداد 1386, 18:11 عصر
یه سری Role تو بانک تعریف کن
با sp_addrolemember بهشون Role مناسب رو از طریق مدیر بده, یعنی مدیر یه SP اجرا کنه که Role مورد نظرت رو به کاربر بده.
اگه سوالت رو درست متوجه شده باشم.
tc1000
یک شنبه 20 خرداد 1386, 18:12 عصر
اگر درست فهمیده باشم این جوابش هستش.
در یک table میتونی دسترسی های یوزر رو اونجا قرار بدی.
مثال :
یک فیلد ایجاد کن به نام news و فیلد دیگری به نام code در table به نام tbl_access
وقتی یوزر ثبت نام میکنه و اطلاعات اون رو ذخیره میکنی کد یوزر رو اینجا هم ثبت کن و مقدار news رو برابر 0- قرار بده.
حالا با admin میای و اگر بخوای دسترسی یوزر رو به قسمت news بدی فیلد news رو تغییر میدی به طور مثال میزاری 1 بعد تو برنامت میای چک میکنه اگر این فیلد 1 بود برای این یوزر این صفحات رو هم بتونه با کنه. اگر نه که اون پیامی که میخوای بده.
در ضمن این یک مثال ساده بود.
shahramasp
سه شنبه 22 خرداد 1386, 08:53 صبح
ممنون از دوستان
روشهایی که گفتین کاملا صحیح است ولی دنبال راه حل منطقی تری هستم ! به دلیل اینکه اگر بخوام برای هر کاربر یک فیلد داشته باشم که تک تک آتم ها رو چک کنم این خیلی سخت می شه شما حساب کنید بعد از login هر کاربر باید حداقل 20 Session رو set کنم و هر زمان که خواست به هر لینکی سر بزنه باید با If اونو چک کنم که کاره البته درست ولی خیلی زمان بریه !!
به دنبال راه حل های .net2 هستم
متشکرم
Behrouz_Rad
سه شنبه 22 خرداد 1386, 09:41 صبح
راه حلی که در پست 3 اشاره شده صحیح است.
همراه با این توضیحات که:
نیازی به ذخیره ی Role کاربر در Session نداری.
Role ها رو پس از استخراج از دیتابیس با یک Delimiter از هم تفکیک و در زمان ایجاد Ticket تصدیق هویت در پارامتر userData ی سازنده ی FormsAuthenticationTicket، رشته ی حاصل از Role ها رو قرار میدی.
این Role ها در روال AuthenticateRequest فایل Global.asax به پارامتر دوم Context کاربر که با استفاده از کلاس GenericPrincipal ایجاد میشه نسبت داده خواهند شد.
زین پس، کاربر در هر فعالیت خود، یک زمینه ی امنیتی خواهد داشت که Role های وی نیز در این زمینه وجود دارند و می تونی در حالت ساده، در روال Page_Load یک صفحه، وجود یک Role رو با استفاده از متد IsInRole کلاس User بررسی و اجازه ی مشاهده ی یک صفحه ی خاص رو به کاربر بدی یا ندی!
و این بود یک راه حل فوق استاندارد!!!:چشمک:
موفق باشید:لبخندساده:
shahramasp
چهارشنبه 23 خرداد 1386, 17:22 عصر
متشکرم یکم برام گنگ بود ولی سعی می کنم درستش کنم
بازه مممنون
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.