PDA

View Full Version : تعریف کاربر برای همراه با user name و password



ztx4
شنبه 02 بهمن 1389, 16:01 عصر
سلام دوستان
من دارم روی یک برنامه ای کار می کنم.
نیاز دارم در ابتدای اجرای برنامه یک صفحه ی login برای برنامه ایجاد کنم که از طریق اون نام کاربری و رمز عبور دریافت بشه و با توجه به کاربر امکانات برنامه در اختیارش قرار بگیره.
از این برنامه این افراد استفاده می کنند:
یک منشی
یک مدیر
و چند کارمند
که امکانات و اختیارات هر کدوم با اون یکی متفاوته.یعنی دکمه هایی که برای مدیر فعاله برای منشی غیر فعال خواهد بود.
این برنامه تحت شبکه نیست ولی در آینده قراره تحت شبکه بشه.
C#.net 2010 , sql server
1- چه راهکاری برای این کار پیشنهاد می کنید؟
2-آیا این کار رو باید در سطح بانک اطلاعاتی انجام بدم یا در خود برنامه این امکانات رو قرار بدم؟
3- چه نکات امنیتی رو باید رعایت کنم؟
4 - و .... هزار تا سوال دیگه...

مرسی از شما دوستان
ممنون.

BEHZADnr
یک شنبه 03 بهمن 1389, 00:00 صبح
با سلام
لطفا از نام تاپیک مناسب استفاده کنید با این نام تاپیک که شما گذاشتید بازدیدکننده گیج میشه ، بهتر بود از نام ایجاد محدودیت برای کاربرها استفاده میکردید

برای اینکار بهتره یه کلاس برای دریافت آی دی و نام کاربری بنویسی تا بعد از ورود به صفحه اصلی با آی دی اونا چک کنی که ببینی کدوم آی دی وارد شده و با استفاده از switch case امکانات هر کاربر را فعال یا غیر فعال کنی

مثلا آی دی 1 = مدیر و استفاده از تمام امکانات نرم افزار
آی دی 2 = منشی و استفاده از امکانات کاربردی نرم افزار

بازم اگه مشکلی بود بگو تا بیشتر توضیح بدم

georgiaro
یک شنبه 03 بهمن 1389, 00:28 صبح
سلام به نظر من بهتره از user های sql استفاده کنی یعنی واسه هر کاربر یک user ایجاد کن تا به راحتی هم سطح دسترسی کاربرا رو روی دیتا بیس تعیین کنی و هم راحت درست بودن رمزعبور رو چک کنی.(هر کی بتونه به DB لاگین کنه پسوردش درسته)
برای تعیین امکانات هر کاربر هم یک جدول تو DB ایحاد کن و واسه هر نوع دسترسی یک کد رو تعریف، بعد میتونی از این کد برای تعیین امکانات برنامه برای هر نوع کاربر استفاده کنی.
پیشنهاد من اینه که اگر تغییرات فرم برای هرنوع کاربر زیاده بهتره واسه هر نوعش یک فرم جدا طراحی کنی وگرنه با زیاد شدن کاربرا و تغییرات واسه هر کدوم کارت خیلی خیلی (تجربه شخصی) سخت میشه.
از نظر امنیتی هم چون login تو سطح DB انجام میشه و اگر سطح دسترسی ها خوب و دقیق مشخص بشه از نظر دسترسی به اطلاعات که از همه مهمتره خیالت راحت میشه واسه برنامه هم از اون کد دسترسی که گفتم میتونی استفاده کنی.
موفق باشی.

ztx4
یک شنبه 03 بهمن 1389, 16:23 عصر
سلام به نظر من بهتره از user های sql استفاده کنی یعنی واسه هر کاربر یک user ایجاد کن تا به راحتی هم سطح دسترسی کاربرا رو روی دیتا بیس تعیین کنی و هم راحت درست بودن رمزعبور رو چک کنی.(هر کی بتونه به DB لاگین کنه پسوردش درسته)
برای تعیین امکانات هر کاربر هم یک جدول تو DB ایحاد کن و واسه هر نوع دسترسی یک کد رو تعریف، بعد میتونی از این کد برای تعیین امکانات برنامه برای هر نوع کاربر استفاده کنی.
پیشنهاد من اینه که اگر تغییرات فرم برای هرنوع کاربر زیاده بهتره واسه هر نوعش یک فرم جدا طراحی کنی وگرنه با زیاد شدن کاربرا و تغییرات واسه هر کدوم کارت خیلی خیلی (تجربه شخصی) سخت میشه.
از نظر امنیتی هم چون login تو سطح DB انجام میشه و اگر سطح دسترسی ها خوب و دقیق مشخص بشه از نظر دسترسی به اطلاعات که از همه مهمتره خیالت راحت میشه واسه برنامه هم از اون کد دسترسی که گفتم میتونی استفاده کنی.
موفق باشی.

ممنون از پاسختون
آیا در این حالت در آینده به راحتی می توان کاربر جدیدی مثلا از نوع منشی تعرف کنم؟
یعنی 2 تا منشی داشته باشیم؟

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

فرم جدا طراحی کنم؟مدیریت این فرم ها بعد از لاگین مشکل نیست؟ چه طور انجام میشه؟

مرسی

georgiaro
دوشنبه 04 بهمن 1389, 00:44 صبح
در مورد سوال اولتون باید بگم که یکی از ویژگی های این روش همینه. چون شما توی یک جدول نوع کاربرها رو مشخص میکنید پس مشکلی برای اضافه کردن یک کاربر جدید از یک نوع وجود نداره. (مثلا اگه کد مدیر 1وکد منشی 2 باشه یک جدول مثل این داریم)


user type
------------
A--------1
B--------2
C--------2

که تو این حدول ما دوتا منشی و یک مدیر داریم.

جالا میرسیم به سوال دوم: توی حالت Windows authentication برای sql شما میتونید از user های خود ویندوز استفاده کنید ولی بهتره که از حالت Mixed استفاده کنید و user هاتون رو با Login های مجزا توی sql ایجاد کنید.

و اما سوال سوم : منظور من اینه که اگر شما یه همچین حالتی دارید که مثلا دو تا textBox توی فرمتونه و مدیر میتونه ببینه ولی منشی احازشو نداره پس بهتره که برای منشی یک فرم مشابه ایجاد کنید و اون دوتا textBox رو ازش حذف کنید وگرنه با زیاد شدن نوع کاربرا و انواع مختلف حالت واسه هر کدومشون کارتون خیلی سخت میشه واسه مدیریت تغییرات .
مدیریت پس از login هم اینجوری میشه که شما با use&pass به DB وصل میشید بعد با استخراج "کد نوع" که مشخص کننده نوع کاربر ورودیه میتونید فرم مربوط به همون کاربر رو load کنید.

پ ن :البته بزرگترین مزیت این روش اینه که علاوه بر داخل برنامه سطح دسترسی کاربر ها مشحص و محدود میشه.

موفق باشید.