PDA

View Full Version : تعيين سطح دسترسي فرمها



swallow.pa
پنج شنبه 30 مرداد 1393, 15:12 عصر
دوستان سلام
بعد از جستجو در سايت برنامه نويس نتايج زير را براي سطح دسترسي فرمها پيدا كردم
1- براي دسترسي يك جدول ديگه درست مي كنيم كه رفرنس دارد به جدول كاربران
2- در اون جدول (جدول دسترسيها) براي هر فرم يك فيلد قرار مي دهيم مثلا

Userref Person
11100 1


مي بينيد نام فيلد Person هست مربوط به فرم پرسن مي باشد حالا مقادير 11100 اما تفسير مقادير كاركتر اول 1 نشاندهنده اينه كه كاربر فرم پرسنل را داشته باشد يا نه
كاركتر دوم 1 براي جديد كاركتر سوم 1 براي اصلاح كاركتر 4 براي حذف كاركتر 5 براي جستجو
يك به معناي فعال بودن مي باشد 0 به معناي غير فعال بودن در حقيقت مقادير بولي ان مي باشند

حالا سوالات من
من مي دونم وقتي كاربر لوگين مي شود بايد مقادير چك شود و متناسب با سطح دسترسي قسمتهاي مختلف فراخواني مي شود اما مي خوام بدونم دوستان اين روش رو تاييد مي كنند يا نه يا براي انكريپت اون و دنكريپت كه كاربر از ديتابيس نتونه اطلاعات رو تغيير بدهد چيكار كنيم

كسي اگه نظري دارد و موردي مي بيند لطفا كمك كند
ممنونم

swallow.pa
دوشنبه 29 دی 1393, 18:29 عصر
بالا اوردن تايپك و منتظر نظرات دوستان

gilsoft
دوشنبه 29 دی 1393, 23:06 عصر
دوستان سلام
بعد از جستجو در سايت برنامه نويس نتايج زير را براي سطح دسترسي فرمها پيدا كردم
1- براي دسترسي يك جدول ديگه درست مي كنيم كه رفرنس دارد به جدول كاربران
2- در اون جدول (جدول دسترسيها) براي هر فرم يك فيلد قرار مي دهيم مثلا

Userref Person
11100 1


مي بينيد نام فيلد Person هست مربوط به فرم پرسن مي باشد حالا مقادير 11100 اما تفسير مقادير كاركتر اول 1 نشاندهنده اينه كه كاربر فرم پرسنل را داشته باشد يا نه
كاركتر دوم 1 براي جديد كاركتر سوم 1 براي اصلاح كاركتر 4 براي حذف كاركتر 5 براي جستجو
يك به معناي فعال بودن مي باشد 0 به معناي غير فعال بودن در حقيقت مقادير بولي ان مي باشند

حالا سوالات من
من مي دونم وقتي كاربر لوگين مي شود بايد مقادير چك شود و متناسب با سطح دسترسي قسمتهاي مختلف فراخواني مي شود اما مي خوام بدونم دوستان اين روش رو تاييد مي كنند يا نه يا براي انكريپت اون و دنكريپت كه كاربر از ديتابيس نتونه اطلاعات رو تغيير بدهد چيكار كنيم

كسي اگه نظري دارد و موردي مي بيند لطفا كمك كند
ممنونم

سلام دوست عزیز

کلاس زیر برای Encrypt و Decrypt کردن رشته‌ها نوشته شده:

Public Class cSecurity
' اعداد داخل آرایه بین 0 تا 255 و قابل تنظیم از طرف کاربر میباشد
' نکته مهم : هر رشته ای که با Keyهای این آرایه Encrypt بشه .. باید با همون Keyها Decrypt بشه ...
Private _KeyArray As Byte() = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 15, 25, 35, 45, 55, 65, 75, 85, 95, 125, 150, 175, 200, 255}


Public Property KeyArray() As Byte()
Get
Return _KeyArray
End Get
Set(ByVal value As Byte())
_KeyArray = value
End Set
End Property


Private Function FindCode(ByVal key As Byte()) As Int64
Dim InputString As String = ""
For k As Integer = 0 To key.Length - 1
InputString &= Chr(key(k))
Next
Dim temp As Int64 = 0
For i As Integer = 0 To InputString.Length - 1
temp += System.Convert.ToInt64(InputString(i))
Next
Return temp
End Function


Public Function ToEncrypt(ByVal InputString As String) As String
Dim temp As String = ""
Dim code As Int64 = FindCode(_KeyArray)
For i As Integer = 0 To InputString.Length - 1
temp += Convert.ToChar(Convert.ToInt64(InputString(i)) + code)
Next
Return temp
End Function


Public Function ToDecrypt(ByVal InputString As String) As String
Dim temp As String = ""
Dim code As Int64 = FindCode(_KeyArray)
For i As Integer = 0 To InputString.Length - 1
temp += Convert.ToChar(Convert.ToInt64(InputString(i)) - code)
Next
Return temp
End Function
End Class


اعداد داخل آرایه بین 0 تا 255 و قابل تنظیم از طرف کاربر میباشد.


نکته مهم : هر رشته ای که با Keyهای این آرایه Encrypt بشه .. باید با همون Keyها Decrypt بشه ...


به شکل زیر امتحانش کن:

Dim s As New cSecurity
Dim strEncrypt As String
strEncrypt = s.ToEncrypt("Test String")
Console.WriteLine(strEncrypt)
Console.WriteLine(s.ToDecrypt(strEncrypt))


موفق باشید .....

gilsoft
دوشنبه 29 دی 1393, 23:22 عصر
2- در اون جدول (جدول دسترسيها) براي هر فرم يك فيلد قرار مي دهيم مثلا

Userref Person
11100 1

كسي اگه نظري دارد و موردي مي بيند لطفا كمك كند

دوباره سلام

برای تبدیل پارامترها به رشته .. من از کدهای زیر استفاده می‌کنم .. شما یه Panel و چندتا CheckBox داخل پنل اضافه کن و کدهای زیر رو امتحان کن:

Public Function IntToBin(ByVal IntNum As Integer) As String
IntToBin = Convert.ToString(IntNum, 2)
End Function 'IntToBin()


Public Function BinToInt(ByVal BinNum As String) As Integer
BinToInt = Convert.ToInt32(BinNum, 2)
End Function 'BinToInt()


Private Function GetParameters() As Integer
Dim value As Integer = 0
Dim chbx As CheckBox
For Each ctrl As Control In Panel1.Controls
If TypeOf ctrl Is CheckBox Then
chbx = TryCast(ctrl, CheckBox)
If chbx.Visible And chbx.Checked Then value += CInt(chbx.Tag.ToString.Trim)
End If
Next
Return value
End Function 'GetParameters()


Private Sub SetParameters(value As Integer)
Dim bin As String = IntToBin(value) : bin = StrReverse(bin.Trim)
If value = 0 Then bin = StrDup(31, "0")
Dim N, cnt As Byte : cnt = bin.Length
Dim chbx As CheckBox


For Each ctrl As Control In Panel1.Controls
If TypeOf ctrl Is CheckBox Then
chbx = TryCast(ctrl, CheckBox)
N = CByte(chbx.Name.ToUpper.Replace("CHECKBOX", ""))
If N <= cnt Then
If chbx.Visible = True Then
If Mid(bin, N, 1) = "1" Then
chbx.Checked = True
Else
chbx.Checked = False
End If
End If
End If
End If
Next
End Sub 'SetParameters


Private Sub TestParameters(sender As System.Object, e As System.EventArgs)
Dim bin As String = "1111111111111111111111111111111"
Dim int As Integer = BinToInt(bin)


Console.WriteLine("BinToInt({0}) = {1}", bin, BinToInt(bin))
Console.WriteLine("IntToBin({0}) = {1}", int, IntToBin(int))


Console.WriteLine("GetParameters() = {0}", GetParameters())
SetParameters(0)
End Sub

توضیح اینکه: این کدها برای تبدیل حداکثر 31 پارامتر به رشته طراحی شده‌اند ....

موفق باشید .....