PDA

View Full Version : کدنویسی سیستم لاگین



fa_karoon
سه شنبه 07 اردیبهشت 1389, 19:27 عصر
سیستم لاگین من با یک یوزر کنترل پیاده سازی شده است کاربر هنگامی که لاگین می کند باید فقط یک لینک خروج ببیند و دیگر در صفحات بعد تکست باکس های لاگین را نبیند که من قبلا در پیج لود یوزر کنترل سشن را چک می کردم که اگر به غیر از Anonymous است این اتفاق بیفتد اما از آنجا که سشن ناامن است هنگام لاگین نقش فرد را از جدولی که اطلاعات افراد ثبت نام کرده در آن ریخته می شوند خوانده می شود و در جدول دیگری به نام لاگین ریخته می شود حال می خواهم هنگامی که کاربر خروج را کلیک می کند رکورد او پاک شود و در پیج لود هم این اتفاق بیفتد اما چون دیگر نقش کاربر را در سشن ندارم باید کانکشن اپن کنم و از جدول بخوانم که این کار در هر پیج لود بسیار سنگین می شود کدم را ضمیمه می کنم لطفا کمک کنید



Imports System.Security.Cryptography
Partial Class LogInOut
Inherits System.Web.UI.UserControl
Private _format As String = ""
Private _guest As String = ""
Private _member As String = ""
Private Shared prevPage As String = String.Empty
Public Event LinkClicked(ByVal sender As Object, ByVal e As EventArgs)
Protected Sub btn_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles _
btnLogIn.Command, lnkLog.Command
' One of the Button controls has been clicked.
' Raise an event to the page.
RaiseEvent LinkClicked(Me, EventArgs.Empty)
End Sub
Public Property StaticMem() As String
Get
Return _member
End Get
Set(ByVal value As String)
_member = value
End Set
End Property
Public Property StaticGue() As String
Get
Return _guest
End Get
Set(ByVal value As String)
_guest = value
End Set
End Property

Public Property Format() As String
Get
Return _format
End Get
Set(ByVal value As String)
_format = value
End Set
End Property
Protected Sub lnkLog_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkLog.Click
If lnkLog.Text = "ورود" Then
Panel1.Visible = True
Response.Redirect("Default.aspx?n=" & Request.Url.ToString)
ElseIf lnkLog.Text = "خروج" Then
Session("Role") = "Anonymous"
'Session.Abandon()
lnkLog.Text = "ورود"
Application("UserGuest") += 1
Application("UserMember") -= 1
StaticGue = Application("UserGuest")
StaticMem = Application("UserMember")
Response.Redirect("Home.aspx")
End If
End Sub

Protected Sub btnLogIn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLogIn.Command

Dim finalkey As String
Dim IV As Byte() = New Byte(7) {240, 32, 45, 29, 0, 76, 173, 59}
Dim cryptoKey As String = "All you need is Love"
Dim MyString As String = TextBox2.Text
Dim buffer As Byte() = System.Text.Encoding.ASCII.GetBytes(MyString)
Dim des As TripleDESCryptoServiceProvider = New TripleDESCryptoServiceProvider()
Dim MD5 As MD5CryptoServiceProvider = New MD5CryptoServiceProvider()
des.Key = MD5.ComputeHash(System.Text.ASCIIEncoding.ASCII.Ge tBytes(cryptoKey))
des.IV = IV
Dim CodedBuffer As Byte() = des.CreateEncryptor().TransformFinalBlock(buffer, 0, buffer.Length)
finalkey = System.Convert.ToBase64String(CodedBuffer, 0, CodedBuffer.Length)

Dim strRole As String = " "
Dim intUserID As Integer = 0
Dim com As New SqlCommand("Select * from Newuser where Username='" & _
TextBox1.Text.Trim & "' and Password='" & _
finalkey & "'", Application("con"))
Dim myreader As SqlDataReader
Application("con").open()
myreader = com.ExecuteReader

Do While myreader.Read
intUserID = myreader(0).ToString
Session("UserName") = myreader(1).ToString.Trim
strRole = myreader(7).ToString.Trim
Loop

com.Dispose()
myreader.Close()
If strRole = "Anonymous" Then
lnkLog.Text = "ورود"
lblIdentifier.Text = "مشخصات شما نامعتبر می باشد"
Application("con").close()
Else
Dim strInsert As String = "insert Login_Table(User_ID, User_Name, User_Role)" & _
"values(@User_ID,@User_Name,@User_Role)"
Dim com1 As New SqlCommand(strInsert, Application("con"))
com1.Parameters.AddWithValue("@User_ID", intUserID)
com1.Parameters.AddWithValue("@User_Name", Session("UserName"))
com1.Parameters.AddWithValue("@User_Role", strRole)
Dim Num As Integer
Try
Num = com1.ExecuteNonQuery()
lblIdentifier.Text = Num.ToString & "رکورد ثبت شد"
Catch err As Exception
lblIdentifier.Text = "در عملیات درج خطایی وجود دارد. "
lblIdentifier.Text &= err.Message
Finally
Application("con").close()
End Try


lnkLog.Visible = True
lnkLog.Text = "خروج"
Panel1.Visible = False
Application("UserGuest") -= 1
Application("UserMember") += 1
StaticGue = Application("UserGuest")
StaticMem = Application("UserMember")
lblIdentifier.Text = "ورود شما با موفقیت انجام شد خوشامدید"
If Format = "ایران هیپنوتیزم" Then
Response.Redirect("Home.aspx")
End If
Response.Redirect(Request.QueryString("n"))

End If
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Format = "ایران هیپنوتیزم" Then
If Session("Role").ToString.Trim = "Anonymous" Then
Panel1.Visible = True
lnkLog.Visible = False
ElseIf Session("Role").ToString.Trim <> "Anonymous" Then
Panel1.Visible = False
lnkLog.Visible = True
ElseIf Session("Role").ToString.Trim = "Anonymous" Then
Panel1.Visible = True
lnkLog.Visible = False
End If
Else
Panel1.Visible = False
lnkLog.Visible = True
End If
If Format = "ورود کاربر" Then
Panel1.Visible = True
lnkLog.Visible = False
End If

Dim s As String
s = Session("Role").ToString.Trim
If IsPostBack Or Not IsPostBack Then
If s = "Anonymous" Then
lnkLog.Text = "ورود"
ElseIf s = "Admin" Or s = "User" Then
lnkLog.Text = "خروج"
End If
End If


End Sub
End Class

yilmaz
پنج شنبه 09 اردیبهشت 1389, 16:45 عصر
دوست عزيز
روشي كه براي حل مسئله استفاده كرده ايد روش مناسبي نيست.
مسئله شما حتما" به تعداد زياد براي ديگران هم پيش آمده پس روش حل آن وجود دارد . در چنين مواردي نبايد خودتان شروع كنيد و با مدلي كه در ذهن خودتان است كار ار انجام دهيد. چون اگر هم انجام شود بهترين روش نيست چون فقط يك نفر روي آن فكر كرده است. بايد سعي كنيد هميشه قبل از حل يك مسئله كمي روي نت در باره آن جستجو كنيد. لينك زير يكي از امكانات ارائه شده از طرف مايكروسافت براي حل مسئله شما را به فارسي توصيح مي دهد:

http://iv-college.com/forum/index.php?topic=48.0

موفق باشيد

fa_karoon
یک شنبه 12 اردیبهشت 1389, 17:17 عصر
دوست عزيز
روشي كه براي حل مسئله استفاده كرده ايد روش مناسبي نيست.
مسئله شما حتما" به تعداد زياد براي ديگران هم پيش آمده پس روش حل آن وجود دارد . در چنين مواردي نبايد خودتان شروع كنيد و با مدلي كه در ذهن خودتان است كار ار انجام دهيد. چون اگر هم انجام شود بهترين روش نيست چون فقط يك نفر روي آن فكر كرده است. بايد سعي كنيد هميشه قبل از حل يك مسئله كمي روي نت در باره آن جستجو كنيد. لينك زير يكي از امكانات ارائه شده از طرف مايكروسافت براي حل مسئله شما را به فارسي توصيح مي دهد:

http://iv-college.com/forum/index.php?topic=48.0

موفق باشيد

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

Vahid_moghaddam
یک شنبه 12 اردیبهشت 1389, 18:23 عصر
authentication در asp.net رو مطالعه کنید. در این سایت بحث های بسیار خوبی درباره اون انجام شده. از لینک های زیر هم می تونید استفاده کنید

http://www.4guysfromrolla.com/webtech/110701-1.shtml

http://www.dotnetfunda.com/articles/article141.aspx