PDA

View Full Version : تعیین سطح دسترسی کاربران



hamix666
چهارشنبه 31 خرداد 1396, 02:09 صبح
با سلام
دوستان در مورد تعین سطح دسترسی چه پیشنهادی دارید ؟
هم ساخت جدول ها در sql و هم در سی شارپ؟

parvizwpf
چهارشنبه 31 خرداد 1396, 22:23 عصر
اول طرح اولیه خودتون رو که مدنظر دارید(نیازتون) بگید تا با همکاری دوستان کم کم جلو برید

ali_md110
پنج شنبه 01 تیر 1396, 07:55 صبح
این روش یک روش داینامیک هست و کمی روش وقت بزارید مطالعه کنید به هدفتون میرسید
توی یک برنامه C#‎‎ کلاس وجود داره و توی هر کلاس یک سری متد
برای تعیین سطح دسترسی این کلاسها و متدها باید علامت گذاری بشن و این علامت ها و مسیرها باتوجه گروههای کاربری درون دیتابیس به عنوان Permission ذخیره کرد
یکی از روشهای علامت گذاری بکارگیری Attribute ها هست
مثلا DisplayName که در فضای نام system.componentmodel هست میتونید بکار بگیرید
ولی زیاد انعطاف نداره فقط یک عنوان میشه به این اتربیوت داد
میشه یک Custom Attribute تهیه کرد همراه با ارگومانهای مختلف
مثلا


[Navigation("امور مسافرت", order: 6]


در اینجا Navigation یک پارامتر لیبل برای عنوان و دیگری برای مرتب سازی قبول میکنه
فرض کنیم دو عنوان در منوی برنامه داریم به نام تور مسافرتی و لیست مسافرین
و نیاز داریم کاربران خاصی به متد درج تور دسترسی داشته باشند و عده ای دیگه فقط به لیست تورهای مسافرتی
حالا یک کلاس داریم و توی این کلاس 2 تا متد داریم یکی برای درج تور مسافرتی و دیگری لیست تورهای مسافرتی
برای اینکه این متدها رو علامت گذاری کنیم کافیه اتربیوت Navigation رو به این متدها بچسبونیم


[Navigation("ثبت تور", order: 1)]
public void CreateTravel()
{
دستورات درج
}
[Navigation("لیست تورها", order: 2)]
public void TravelListl()
{
}

کاری که باید بکنیم با رفلکش برنامه جستجو بزنیم و لیست متدهایی که با Navigation علامت گذاری شده پیدا کنیم و سپس این متدهایی که پیدا کردیم به یک کاربر یا گروه کاربری منتسب کنیم و توی دیتایبیس ذخیره کنیم
مثلا


UserId=1
Metod=CreateTravel

هر زمان یک کاربر خواست به فرم درج تور دسترسی داشته باشه ابتدا توی دیتابیس جستجو بزنه و کد کاربری و نام متد استخراج کنیم و سپس از طریق رفلکشن دوباره با متدهای توی برنامه مقایسه کنیم و مجوزها رو بدیم به کاربر
در ضمن میتونید از روی همین لیستی که با رفلکشن بدست اوردیم منوی برنامه رو هم بسازیم و کاملا داینامیک

این روش در mvc رایج هست ولی میتونید در برنامه ویندوزی هم پیاده کنید