我之前发布了一个类似的问题,但很快就将其删除了,因为这个问题有很多错误,而且读者也不清楚。
我正在为患者创建登录,并在登录时(从登录页面login.aspx)我希望在登录验证时将它们重定向到页面(在本例中为user.aspx)从表格中显示他们的详细信息。
到目前为止,我只能获得一个标签,以便为用户登录正确或用户登录错误。
我有一张患者表如下 - 这是所有虚拟数据并组成用户/帐户:
这是代码隐藏文件,我是否正确设置了会话?以及如何在用户通过身份验证时将其重定向到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
我希望有人可以提供帮助。如果我能就此问题提供更多信息或指示,请告诉我。
答案 0 :(得分:1)
不是向用户显示他们已成功登录,只需添加以下代码行将其重定向到user.aspx页面:
Response.Redirect("user.aspx", True)
在用户页面上,您需要检查Session(“PatientId”)是否为空,如果是,则重定向回登录页面。如果确实有值,请确保它是一个数字,然后使用它来通过另一个数据库调用加载患者详细信息。
另一个提示,我注意到你的密码是纯文本的。我强烈建议您使用简单的函数单向散列它们以获得额外的安全性。然后,您可以使用相同的函数来对登录页面上使用的密码进行哈希处理,以与数据库值进行比较。