PDA

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



ulduz114
پنج شنبه 08 مهر 1389, 17:48 عصر
با سلام خدمت تمام دوستان

من می خواهم یک برنامه (حسابداری کوچک) بنویسم که چندین کاربر بتوانند با نقشهای مختلفبا آن کار بکنند مثلا 3 تا نقش داریم که" نقش یک" فقط به بعضی از قسمتهای برنامه دسترسی داره و می تونه با آن کار کنه و "نقش دو" می تونه با کل برنامه کار کنه اما برای بعضی از قسمتها فقط حق دسترسی دیدن را دارد و "نقش سه" به تمام قسمتها برنامه دسترسی کامل داره
کاربران و نقشهایشان تو دیتابیس تعریف شده اند
حالا با چه روشی و به طور اصولی حق دسترسی نقشها و کاربران را کنترل و پیاده سازی کنیم ؟

flash118
پنج شنبه 08 مهر 1389, 18:51 عصر
با سلام
خوب دوست عزیز شما با همون استفاده از جدول دیتا بیست میتونی مدیریت داشته باشی روی کاربران برای مثال برنامه کتابخانه خوب کتابدار ها تو یه جدول هستن میتونی در لود فرم اصلی یا تو کلاس که تو فرم اصلی اجرا بشه البته قبلا از همه کار ها بررسی کنی که کاربر مذکور با کدوم محوز وارد سیستم شده کتابدار تقریبا به همه نرم افزار می تونه بره ولی برخی توانایی مدیریت کل مثل اضافه کردن کتابدار جدید رو نباید داشته باشه پس وظایف هر گروه و امکاناتشون رو مشخص کن و بر جسب عضویت کاربر به هر گروه کاری براش امکانات بده
اما یه راه نابهینه این هست که برای هر گروه کاری یه فرم که از فرم اصلی برنامه ارث بری داره تعریف کنی تو فرم لاگین که میخواهد وارد شه نوع رو تشخیص بده و فرم مربوط به اون گروه کاری لود بشه ولی من روش اول رو پیشنهاد میکنم چون بهینه تر و سریع تر هست و کنترلش راحت و دقیق تر
موفق باشین

mahziar
پنج شنبه 08 مهر 1389, 19:03 عصر
با سلام خدمت تمام دوستان

من می خواهم یک برنامه (حسابداری کوچک) بنویسم که چندین کاربر بتوانند با نقشهای مختلفبا آن کار بکنند مثلا 3 تا نقش داریم که" نقش یک" فقط به بعضی از قسمتهای برنامه دسترسی داره و می تونه با آن کار کنه و "نقش دو" می تونه با کل برنامه کار کنه اما برای بعضی از قسمتها فقط حق دسترسی دیدن را دارد و "نقش سه" به تمام قسمتها برنامه دسترسی کامل داره
کاربران و نقشهایشان تو دیتابیس تعریف شده اند
حالا با چه روشی و به طور اصولی حق دسترسی نقشها و کاربران را کنترل و پیاده سازی کنیم ؟

سلام

بهترین کار اینه که یه فلگ به جدولی که کاربرانت توش تعریف میشه اضافه کنی
حالا موقع تعریف کاربر تو برنامت براش مشخص میکنی اگه مدیر کله فلگ مثلا عدد1 ، اگه مدیر ارشده فلگ عدد 2 و...
بعد فقط کافیه تو فرم اصلیت این فلگ رو ( با توجه به نام کاربری که لاگین شده )از جدول بخونی و تو بخش های مختلف برنامت چک کنی فلگ ایا دسترسی به اون بخش داره یا نه

nilidelphi
جمعه 09 مهر 1389, 16:35 عصر
شما مطمنا یه جدول واسه کاربر ها دارید که هر کاربر یک کد دارد.
بهترین و کم هزینه و کم دردسرترین روش اینه که یه جدول اضافی بصورت جدول ضعیف واسه همون جدول کاربر داشته باشید که کد کاربر کلید خارجیش باشه که این جدول تعدادی فیلد داره که برنامرو واسه هر کاربر محدود می کنه و وقتی با نام کاربری خاصی وارد برنامه بشیم با توجه به محدودیت هایی که در این جدول تعریف شده برنامه در دسترسی اون کاربر محدود میشه.

اگه متوجه نشدید کامل تر بگم.؟؟؟؟؟
موفق باشید.

C Sharp
شنبه 10 مهر 1389, 13:29 عصر
این روشها واسه نرم افزارهای کوچک و بدون قابلیت گسترش جواب میده ، اما اگه انتظارتون از نرم افزاری که تولید میکنید این نیست ، به فکر روش بهتری باشید

M.YasPro
شنبه 10 مهر 1389, 13:52 عصر
من از این روش استفاده میکنم :
یه جدول توی دیتابیسم دارم که کاربر هارو توش تعریف می کنم . فیلدهاش شامل نام کاربری و رمز عبور , id , بقیه فیلد ها هم بستگی به چیزهایی داره که میخوام سطح دسترسی روشون اعمال بشه (مثلا برای حراست یه جایی یه نرم افزار نوشتم که از نظر کارفرما و مسائل امنیتی، مشخصات همسر پرسنل فرقی با آدرس و تلفن هاش نداشت پس این چند تا فیلد رو که شامل مشخصات همسر و آدرس ها و تلفن ها می شد توی جدول users یه فیلد در نظر گرفتم)
وقتی کاربر از فرم لاگین وارد میشد یه DataRow رو با استفاده از فیلد های یوزری که وارد شده مقدار دهی می کردم ، بعد از این هر وقت کاربر فرم جدیدی رو باز می کرد اون DataRow رو به فرم مورد نظر می دادم تا سطح دسترسی ها رو روش اعمال کنه(توی Form_Load).
برای من که این روش خیلی به صرفه بود چون هم خودم ساخته بودمش یعنی هیچ Refrence اضافی یا Componnent یا هر چیز دیگه بیرون از کد خودم نمی خواست هم اینکه فقط یه بار لازم بود اطلاعات یوزر رو از DB بخونی پس کاراییش برای من خیلی بالا بود.