PDA

View Full Version : ایجاد محدودیت برای کاربران %مهم%



arman 2012
شنبه 29 تیر 1392, 19:18 عصر
سلا م دوستان
من در حال نوشتن یک برنامه ی حسابداری هستم
یک سوال داشتم
برای ورود کاربران میخوام محدودیت قائل بشم
مثلا اگر کسی با یوزر Admin وارد شده بتونه همه چی رو ببینه ولی اگر کسی با یوزر آرمان وارد شد
نتونه یک دکمه رو نبینه
میشه کمکم کنید؟؟

aaasadi
یک شنبه 30 تیر 1392, 01:04 صبح
شما میتونی تو دیتابیسی که یوزر ها رو ذخیره کردی و یوزر رو هم ذخیره کنی بعد موقع ای که میخوای یوزر رو با پسورد تطبیق بدی اگه درست نوع یوزر رو فراخوانی کنی بعد بسته به نوع یوزر تو کدی که برای form قسمت load نوشتی برای محدود کردم قسمت های مختلف خاصیت enable رو به حالت false تغییر بدید.

r. salehi
یک شنبه 30 تیر 1392, 02:31 صبح
دوست عزیز ایجاد امنیت فقط قسمتیش مربوط به بانک اطلاعاتیه و ایجاد امنیت کامل و ایجاد سطح دسترسی کامل با جزییات مطابق میل شما را فقط از طریق فرم میتونید پیاده سازی کنید.
مثلا می تونید برای کاربری یک دکمه را غیر فعال کنید تا اصلا نتونه وقایعی را که با کلیک روی دکمه اتفاق می افته را انجام بده.
البته این مستلزم ساختن یک سری جداول در بانک اطلاعاتی شما هست که با تعریف لیست کاربرها و یک سری ستون که دسترسی و عدم دسترسی به قسمتهای مختلف برنامه را مثلا با صفر و یک مشخص کرده، بتونید دسترسی هر کاربر را به صورت یکپارچه کنترل کنید و در صورت نیاز بدون دستکاری کد برنامه، انها را تغییر بدید.

shadi khanum
یک شنبه 30 تیر 1392, 08:15 صبح
اگر قرار که کاربران(مثلا مدیرسیستم) بتونه دسترسی برای کاربرانش تعریف کنه که کی چه بخشی رو ببینه و کی نه، باید یه فرم مثلا به اسم دستیابی توی برنامه داشته باشی که فقط مدیر سیسیتم باز کنه که اونجا قسمتهایی از برنامه (فرم، دکمه و هرچیز دیگه) که مهمه و باید براشون برای کاربران مختلف دسترسی های مختلف تعریف بشه، رو لیست کنی و از یه طرف هم کاربران لیست بشن و اون مدیر سیسام تیک بزنه که کی به دام بخش ها دسترسی داره و از اون طرف تو لود هر فرمی که شامل یکی از اون بخش های مهمه که قبلا تعریف کردی، چک کنی اگر کاربر جاری دسترسی داشت بذاری ببینه و اگر نه نبینه

farbod61
یک شنبه 30 تیر 1392, 10:06 صبح
فکر کنم یک همچین چیزی منظورته
این نرم افزار رو من برای یک شرکت نوشتم
میبینی که وقتی با یوزر خودم وارو میشم دکمه های سمت راست موجوده ولی وقتی با یوزر کاربر عمومی وارد میشم همچین دکمه هایی دیده نمیشه
برای این کار من چیکار کردم؟ درست و غلط بودن روش رو کاری ندارما چون اصلا حرفه ای نیستم و مطمئن هستم روشهای بهتری هم هست
من اومدم تو قسمت امکاناتم یه فرم تعریف کاربر ایجاد کردم
حالا هر کدوم از کاربرا به یه گروهی که تو سیستم تعریف میشه اختصاص پیدا میکنند ، مثلا اپراتور ، کارگر ، سرپرست ، مدیر و ...
و بعدش اومدم برای هر گروه به صورت پیش فرض از منوهای برنامه یک پک باکسهای دسترسی رو تیک زدم که این دسترسیها قابل تغییر هستش
حالا تو فرم لودم وقتی نام یوزر و پسش زده میشه یه سرچ کوچیک توی این قسمت انجام میده و سطح دسترسیهای هر کاربر رو تو فرم لاگین فراخوانی میکنه
حالا تو برنامه میگم اگه تو فرم لوگینم به فرض کنترل کیفیت true بود کاربر دسترسی داشته باشه و یا دکمه ای نشون داده بشه و اگه false بود پیغام عدم سطح دسترسی بده و یا دکمه ای نشون داده نشه

arman 2012
سه شنبه 01 مرداد 1392, 18:54 عصر
خب میشه برام کد هارو بزارین من واقعا لازم دارم و واقعا نفهمیدم

vb341
سه شنبه 01 مرداد 1392, 22:07 عصر
روشی که من خودم نتیجه گرفتم به شرح زیزه :
ابتدا یک جدول برای کاربران بسازین و مشخصات کاربر و رمز ورود و سایر اطلاعات دیگه رو رد بانک قرار بدین
بعد تمامی قسمتهای برنامه اعم از منو ها . دکمه ها و تب ها رو اسمشون رو در بانک کاربران از نوع فیلد Bit قرار بدین
بعد یه تابع میخواد که با خوندن اسم کاربر و گرفتن اسم منو و یا هر چی که هست دسترسی رو چک کنه
فرصت بشه کد رو براتون میزارم

vb341
سه شنبه 01 مرداد 1392, 22:12 عصر
این هم کد مربوطه :


Public Function AccessMenu(ByVal MenuName As String) As Boolean
If GlbUserAdmin Then
AccessMenu = True
Exit Function
End If

If Con.State = ConnectionState.Open Then
Con.Close()
End If

Con.Open()
SQL = "select * from Table_Users where (UserCode=" & GlbUserCode & ")AND " + MenuName + " =1"

'DA = New SqlDataAdapter(SQL, Con)
'DS.Clear()
'DA.Fill(DS, "TblUsers")

Cmd = New SqlCommand("select * from Table_Users where (UserCode=" & GlbUserCode & ")AND " + MenuName + " =1", Con)
Dr = Cmd.ExecuteReader


If Dr.Read() = True Then
AccessMenu = True
Else
MsgBox("کاربر دسترسی ندارد", MsgBoxStyle.OkOnly, "خطا")
AccessMenu = False
End If
End Function

vb341
سه شنبه 01 مرداد 1392, 22:14 عصر
و بعد در فرم لاگین اطلاعات کاربر رو بخونید و در هر قسمت که میخواهید دسترسی رو چک کنید از کد زیر استفاده کنید :


If Not AccessMenu("MnuPersonel") Then Exit Sub
FrmPersonelNew.ShowDialog()

arman 2012
سه شنبه 01 مرداد 1392, 22:19 عصر
ممنون دوست عزیز
میشه همین برنامه رو برام بنویسید و با دیتابیس ها ضمیمه کنید
اگر اینکارو بکنید واقعا ازتون ممنون میشم
خیلی وقته دنبالشم
خواهش میکنم اگر میتونید کمکم کنید اینکارو بکنید

vb341
چهارشنبه 02 مرداد 1392, 19:25 عصر
خوب کد رو که براتون گذاشتم . دیتابیس رو هم طراحی کنید و به ازای هر چیزی که میخئاین دسترسی بهش بدین یک فیلد از نوع Bit و با همون نام که در پروژه هست در دیتابیس قرار بدین
مثلا button1 و ....

vb341
چهارشنبه 02 مرداد 1392, 19:26 عصر
این هم یک دیتابیس نمونه :


CREATE TABLE [dbo].[Table_Users] (
[UserCode] INT NOT NULL,
[UserName] NVARCHAR (50) COLLATE Arabic_CI_AS NOT NULL,
[UserPass] NVARCHAR (50) COLLATE Arabic_CI_AS NOT NULL,
[UserAdmin] BIT NULL,
[UserActive] BIT NULL,
[MnuJobZone] BIT NULL,
[MnuEvidence] BIT NULL,
[MnuRankStudy] BIT NULL,
[MnuStudyPlace] BIT NULL,
[MnuStripe] BIT NULL,
[MnuEmployeType] BIT NULL,
[MnuTrainingType] BIT NULL,
[MnuPersonel] BIT NULL,
[TabPage2] BIT NULL,
[MnuJobHistory] BIT NULL,
[MnuTraining] BIT NULL,
[MnuMissionSeacraft] BIT NULL,
[MnuAddUser] BIT NULL,
[MnuUserAccess] BIT NULL,
CONSTRAINT [PK_Table_Users] PRIMARY KEY CLUSTERED ([UserCode] ASC)
);


GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_Table_Users]
ON [dbo].[Table_Users]([UserName] ASC);

vb341
چهارشنبه 02 مرداد 1392, 19:29 عصر
شما هر قسمتی رو که میخوای دسترسی بدی فقط کافیه هم اسمش یک فیلد در بانک بزاری و در رویداد کلیک دستوری رو که در پست شماره 581 هست قرار بدی

igneousstars
پنج شنبه 03 مرداد 1392, 18:50 عصر
VB341 شاید شما دارید بیش از حد واسش توضیح میدی.اینی که شما میگی یه دیتا بیس جداست ایشون اگه درست گفته باشم فقط اگه کسی با یوزر فلان وارد شد فلان چیز واسش نمایش داده نشه

خوب چیز ساده ای هم هست:


'be tore mesal textbox1 , id va textbox 2 , passworde , button1 ham button baraye login
' hast. dar form2 ham ye button darim be name button2 va mikhaym faqat admin
'behesh dastresi dashte bashe.

Private Sub Button1_OnClick()
If textbox1.Text = "admin" and textbox2.Text = "1234" then
form2.show
form2.button2.visible = false
ElseIf textbox1.Text = "arman" and textbox2.Text = "123" then
form2.Show
form2.button2.visible = true
Else
MsgBox("Wrong User Name Or Password")
End If


اگه درست گفته باشم فقط همین رو میخواستید.

vb341
جمعه 04 مرداد 1392, 01:51 صبح
اگر دقت کنید گفتن برنامه رو بنویسین و دیتابیس مربوطه رو هم بزارین .