PDA

View Full Version : سوال: کنترل دسترسی کاربر



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

majid_vb_2008
سه شنبه 18 خرداد 1389, 08:57 صبح
دوست من
من در برنامه خودم برای این کار یک جدول برای کاربران ساختم که در در این جدول علاوه بر یوزر نیم و پسورد چند فیلد دیگر برای دست رسی ها ساختم که با انتخاب هر دسترسی یکی از این فیلد ها مقدار یک می گیرد و در زمانی که کاربر به برنامه وارد می شود این دسترسی ها برسی شده و قسمت های که کاربر مجوز دسترسی ندارد دیزیبل می شود.


بازم اگر خواستی بگو بیشتر توضیح بدم..

msadgd
سه شنبه 18 خرداد 1389, 09:08 صبح
دوست من
من در برنامه خودم برای این کار یک جدول برای کاربران ساختم که در در این جدول علاوه بر یوزر نیم و پسورد چند فیلد دیگر برای دست رسی ها ساختم که با انتخاب هر دسترسی یکی از این فیلد ها مقدار یک می گیرد و در زمانی که کاربر به برنامه وارد می شود این دسترسی ها برسی شده و قسمت های که کاربر مجوز دسترسی ندارد دیزیبل می شود.


بازم اگر خواستی بگو بیشتر توضیح بدم..

ممنون مجید جان. کاری که انجام دادی همونی هست که تو ذهن من بود. اما موقع وارد شدن کاربر چه روشی رو انتخاب کردی؟ (برای همون دیزیبل کردن) اگه کدهاتو بفرستی خیلی عالیه

majid_vb_2008
سه شنبه 18 خرداد 1389, 09:15 صبح
به عنوان مثال در زمان ورود به برنامه می تونی چک کنی مثلا اگر فیلد منو مقدارش یک باشه منو هایی برنامه اینیبل بشه در غیر ای صورت دیزیبل بشه

تا یک ربع دیگه برات کد هم می گزارم

majid_vb_2008
سه شنبه 18 خرداد 1389, 10:11 صبح
اینم کد


Dim Pass As String = ""
If T1.Text <> "" Then
strsql = "select * From User1 WHERE Name Like'" & T1.Text & "'"
da = New SqlDataAdapter(strsql, con)
ds = New DataSet
con.Open()
da.Fill(ds, "User1")
If ds.Tables("User1").Rows.Count <> 0 Then
Pass = ds.Tables("User1").Rows(0).Item("Pasword")
If T2.Text = Pass Then
Frmmain.Show()
Frmmain.Statusbar.Items(1).Text = T1.Text
Me.Hide()
Else
MsgBox("كلمه عبور را صحصيح وارد كنيد", , "ورود به سيستم")
T2.Select()
End If
con.Close()
Else
MsgBox("كاربري با اين نام در سيستم ثبت نشده است", , "ورود به سيستم")
T1.Select()
con.Close()
End If
Else
MsgBox("نام كاربري را وارد كنيد", , "ورود به سيستم")
T1.Select()
End If
اینم فرمی که طراحی کردم

http://barnamenevis.org/forum/attachment.php?attachmentid=50751&stc=1&d=1275977051

اینم برای تعیین سطح که من توی لود فرم اصلی برنامه نوشتم


'------ تعیین سطح کاربر
Dim A As Integer
Dim B As Integer
Dim C As Integer
strsql = "select * From User1 WHERE Name Like'" & FrmLogin.T1.Text & "'"
da = New SqlDataAdapter(strsql, con)
ds = New DataSet
con.Open()
da.Fill(ds, "User1")
If ds.Tables("User1").Rows.Count <> 0 Then
A = ds.Tables("User1").Rows(0).Item("A")
B = ds.Tables("User1").Rows(0).Item("B")
C = ds.Tables("User1").Rows(0).Item("C")
End If
If A = 1 Then mnuReport.Enabled = False
If B = 1 Then mnuTool.Enabled = False
If C = 1 Then Tanzem.Enabled = False

msadgd
سه شنبه 18 خرداد 1389, 10:44 صبح
ممنون مجید جان
متوجه شدم چجوریه. اما یه سوال اگر ما یه برنامه ای داشته باشیم که شامل منوهای خیلی زیاد و همینطور زیر منوهای متعدد باشه، اونوقت کد نویسی یه همچین چیزی با این روش خیلی وحشتناک و زیاد نمیشه؟ اونم توی لود صفحه :متعجب:
تازه ممکنه توی یک منو فقط دسترسی به یکسری زیر منو های خاص رو به کاربر داده باشیم. اونوقت کنترل لاگین شدن از لحاظ کد نویسی واقعا گیج کننده میشه.
دنبال یه راه حل اساسی می گردم

majid_vb_2008
سه شنبه 18 خرداد 1389, 10:52 صبح
یه روش دیگه هم هست
شما چند تا متغییر سراسری تعریف کنی مثلا A , B ,C وبعد توی لود فرم مقدار بهشون بدی و قبل از اجرای هر فرم مقدار اونها رو چک کنید اگر کاربر مجوز استفاده داشت فرم رو براش نمایش بدید.

اما به نظر من این روش یک مقدار پیچیده تر از روش قبلی می شه آخه توی لود همه فرم ها باید کد بنویسی


حالا اگر روش دیگر به ذهن شما خطور کرد منم در جریان بگزارید . تا منم روشم رو عوض کنم

Hossein Bazyan
سه شنبه 18 خرداد 1389, 11:22 صبح
سلام دوستان درباره این موضوع جستجو کردم پاسخ هایی که بود کارم رو راه ننداخت.
سوالم اینه که: برای تعریف یک کاربر جدید توی برنامه ما میخواهیم بعد از گرفتن مشخصات اون یک سری دسترسی هارو برای اون فعال کنیم که با تیک کردن چک باکسهایی که عنوان منو ها و زیر منوها رو دارن، این کار رو انجام بدیم و ذخیره کنیم. مهمترین قسمت مربوط به وارد شدن کاربر به برنامه است که باید از روی همون دسترسی هایی که براش تیک خورده برنامه و منوها و زیر منو ها باز بشن.
ممنون از راهنماییهاتون

سلام
در یکی از پستهام در چواب یکی از دوستان همچین برنامه ای رو نوشتم در پستهای من بگرد پیداش کن
تمامی منوها و زیر منوها در TreeView نمایش داده میشه و با تیک زدن هر یک دسترسی به آنرا آزاد و با برداشتن تیک دسترسی رو میتوان قطع کرد و یک فیلد هم در دیتابیس برای تک تک کاربران بعنوان کلید دسترسی درست شده است . یعنی هر کاربری میتواند دسترسی خودش رو داشته باشد.

msadgd
سه شنبه 18 خرداد 1389, 11:58 صبح
سلام
در یکی از پستهام در چواب یکی از دوستان همچین برنامه ای رو نوشتم در پستهای من بگرد پیداش کن
تمامی منوها و زیر منوها در TreeView نمایش داده میشه و با تیک زدن هر یک دسترسی به آنرا آزاد و با برداشتن تیک دسترسی رو میتوان قطع کرد و یک فیلد هم در دیتابیس برای تک تک کاربران بعنوان کلید دسترسی درست شده است . یعنی هر کاربری میتواند دسترسی خودش رو داشته باشد.

عزیزم ماشالله خیلی پست داری. لطفا لینک بده داداش

Hossein Bazyan
سه شنبه 18 خرداد 1389, 12:07 عصر
عزیزم ماشالله خیلی پست داری. لطفا لینک بده داداش

سلام
تنبلی هم حدی داره نه !
جستجو رو به همین دلیل در سایتها گذاشتند رفیق!

اینهم لینکش از ابتدا تا انتها رو بخون
http://barnamenevis.org/forum/showthread.php?t=214066&highlight=%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C

azam2005
یک شنبه 17 اردیبهشت 1391, 18:22 عصر
با سلام
اگر بخواهید روی سطر های خاص هم مجوز دهید چکار می کنید؟
مثلا اگر بخواهید یک کاربر پس از ورود به سایت امکان ویرایش - مشاهده - حذف و ... رکوردهای خاصی را داشته باشد مثلا :

1-همه رکورد های یک جدول را
2- رکوردهایی که خودش ثبت کرده
3-رکوردهای که پرسنل ثبت کرده
4- رکوردهایی که همکار ثبت کرده و ...