登录

时间:2016-06-04 23:27:50

标签: asp.net vb.net

我之前发布了一个类似的问题,但很快就将其删除了,因为这个问题有很多错误,而且读者也不清楚。

我正在为患者创建登录,并在登录时(从登录页面login.aspx)我希望在登录验证时将它们重定向到页面(在本例中为user.aspx)从表格中显示他们的详细信息。

到目前为止,我只能获得一个标签,以便为用户登录正确或用户登录错误。

我有一张患者表如下 - 这是所有虚拟数据并组成用户/帐户:

patient table

这是代码隐藏文件,我是否正确设置了会话?以及如何在用户通过身份验证时将其重定向到user.aspx及其表中的相应详细信息(例如用户详细信息)

Imports System.Data.SqlClient
Imports System.Data

Partial Class Pages_Login
    Inherits System.Web.UI.Page

    Protected Sub btnlogin_Click(sender As Object, e As EventArgs) Handles btnlogin.Click
        Dim patientNo As String
        Dim password As String
        Dim bAuthethicated As Boolean
        patientNo = txtuser.Text
        password = txtpassword.Text
        bAuthethicated = CheckUser(patientNo, password)

        If bAuthethicated Then
            lblresult.Text() = "correct"
        Else
            lblresult.Text() = "Incorrect Student Number and/or Password"
        End If
    End Sub

    Public Function CheckUser(patientNo As String, password As String) As Integer
        Dim cmdstring As String = "SELECT * FROM Patient  Where Username=@PATIENTNO AND Password=@PASSWORD"
        Dim found = 0
        Using conn As New SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Laura\Final_proj\App_Data\surgerydb.mdf;Integrated Security=True;Connect Timeout=30")
            Dim cmd = New SqlCommand(cmdstring, conn)
            cmd.Parameters.Add("@PATIENTNO", SqlDbType.NChar).Value = patientNo
            cmd.Parameters.Add("@PASSWORD", SqlDbType.NChar).Value = password
            conn.Open()

            Dim reader = cmd.ExecuteReader()
            While reader.Read()
                Session("PatientId") = CInt(reader.Item("PatientId"))
                found = CInt(reader.Item("PatientId"))
            End While

            reader.Close()
        End Using
        Return (found)
    End Function
End Class

我希望有人可以提供帮助。如果我能就此问题提供更多信息或指示,请告诉我。

1 个答案:

答案 0 :(得分:1)

不是向用户显示他们已成功登录,只需添加以下代码行将其重定向到user.aspx页面:

Response.Redirect("user.aspx", True)

在用户页面上,您需要检查Session(“PatientId”)是否为空,如果是,则重定向回登录页面。如果确实有值,请确保它是一个数字,然后使用它来通过另一个数据库调用加载患者详细信息。

另一个提示,我注意到你的密码是纯文本的。我强烈建议您使用简单的函数单向散列它们以获得额外的安全性。然后,您可以使用相同的函数来对登录页面上使用的密码进行哈希处理,以与数据库值进行比较。