PDA

View Full Version : بهترین روش برای پیاده سازی سطوح دسترسی



H:Shojaei
یک شنبه 30 فروردین 1394, 14:52 عصر
سلام...
تو پروژه ای سطح دسترسی دارم یعنی مدیر اصلی میاد تعدادی مدیر جدید تعریف میکنه و سطوح دسترسی واسه اینا تعریف میکنه و واسه هر سطح دسترسی میتونه بگه مثلا به کدوم بخشها میتونه کسی که این سطح دسترسی رو داره وارد بشه و تغییرات ایجاد کنه...
فرض کنید ما 3 عملیات رو تو این نرمافزار انجام میدیم حذف درج و ویرایش که اینا هرکدوم امکان داره به هر نحوی انجام بشن یعنی شاید هرکدوم یه کلید داشته باشن که به صفحه مربوط به هرکدوم میریم و عملیات مربوطه رو انجام میدیم یا شاید همه تو یه فرم باشن و از هم با فاصله جدا شده باشن و تمام کنترل ها هم تو همین فرم باشه...
حالا مدیر اصلی میاد یک نفر به نام مدیر1 و یکی دیگه به نام مدیر2 رو درج میکنه و همچنین 2تا سطح دسترسی هم تعریف میکنه به نامهای یکی خرید و یکی هم فروش که خرید میتونه فقط درج رو انجام بده و فروش هم ویرایش و حذف رو که مدیر اصلی به مدیر1 سطح دسترسی خرید رو میده و به مدیر2 هم سطح دسترسی فروش رو میده...
حالا با این فرضیات وقتی یکی از این مدیران وارد میشن اول کجا اون سطح دسترسی رو نگه داریم که هر کاری کرد بفهمیم سطح دسترسیش چیه!؟ و بعد هم چطور بگیم که مثلا اگر مدیر 1 بود و سطح خرید رو داشت نباید ویرایش و حذف رو بتونه انجام بده؟! منظورم اینه که معمولش چیه؟ کنترل ها رو مخفی میکنن؟ تو برنامه وقتی مثلا مدیر یک خواست حذف کنه بهش پیغام میدن که دسترسی به این نداره یا این که چه کاری انجام میشه تو این مورد سطح دسترسی؟
کلا یه سناریو بگین ازش ممنون میشم...

hoseinharami
یک شنبه 30 فروردین 1394, 16:00 عصر
ببین اولا که یک login می خواهی در اول برنامه ات
بعد یک دیتابیس می خوای که یوزر نیم و سطح دسترسی رو ذخیره کنه
برای مثال برای مدیر یک ، یوزر Modir1 رو میدی و برای سطح دسترسی ، عدد 1 رو توی جدول ذخیره می کنی
بعد توی ادامه برنامه ات هر موقع کلیدی زده شد اول چک می کنی که چه یوزرنیمی وارد شده و سطح دسترسی اش چه عددی هست و اگر اون عدد با عددی که توی جمله شرطی می زاری برابر بود ، فرد بتونه عملیات رو انجام بده و جز این فرد نتونه اون عملیات رو انجام بده

ali_md110
یک شنبه 30 فروردین 1394, 16:06 عصر
سلام
یکی از بهترین روشها استفاد از Custom Attribute ها هست که با به کارگیری واسط IPrincipal و IIdentity میایم امنیت برنامه را بیشتر میکنیم
و این Attribute های سفارشی را به کلاس مورد نظر یا فرم مورد نظر یا حتی متد مورد نظر نسبت میدهیم


[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
public partial class AdminWindow : Window, IView
{
public AdminWindow() {
InitializeComponent();
}

}




در مثال بالا که فقط یک یاداوری هست صفت امنیتی به فرم مدیر نسبت داده شده و فقط کاربران مدیر قادر به دسترسی این فرم را دارند
برای نگهداری سطح دسترسی باید جدول بانک مثل فایل xml یا اسکیول سرور داشته باشید
جدول Role نیاز داریم و جدول User و جدول معرفی وظایف به هر گروه یا Role کاری
مثلا :گروه فروشندگان با n زیر محموعه user تعریف میکنیم و کافی هست کد RoleID در جدول وظاف درج بشه ووقتی کاربر لاگین شد Role کاربر به IPrinsipal تحویل بده و بقیه ماجرا
روی این زمینه تحقیق کنید

pouria_bayat
یک شنبه 30 فروردین 1394, 20:44 عصر
سلام
یکی از بهترین روشها استفاد از Custom Attribute ها هست که با به کارگیری واسط IPrincipal و IIdentity میایم امنیت برنامه را بیشتر میکنیم
و این Attribute های سفارشی را به کلاس مورد نظر یا فرم مورد نظر یا حتی متد مورد نظر نسبت میدهیم


[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
public partial class AdminWindow : Window, IView
{
public AdminWindow() {
InitializeComponent();
}

}




در مثال بالا که فقط یک یاداوری هست صفت امنیتی به فرم مدیر نسبت داده شده و فقط کاربران مدیر قادر به دسترسی این فرم را دارند
برای نگهداری سطح دسترسی باید جدول بانک مثل فایل xml یا اسکیول سرور داشته باشید
جدول Role نیاز داریم و جدول User و جدول معرفی وظایف به هر گروه یا Role کاری
مثلا :گروه فروشندگان با n زیر محموعه user تعریف میکنیم و کافی هست کد RoleID در جدول وظاف درج بشه ووقتی کاربر لاگین شد Role کاربر به IPrinsipal تحویل بده و بقیه ماجرا
روی این زمینه تحقیق کنید

میشه در این مورد بیشتر توضیح بدید یا سورس خاصی سراغ دارید که بشه به طور کامل ازش بهره برد و یادگیری داشت؟