如何在用户登录时获取用户名以显示在标签上

时间:2016-06-07 13:46:51

标签: asp.net vb.net visual-studio-2013

我在visual studio 2013上使用asp.net和vb创建一个网站。我有一个登录会话 - 当用户登录并通过身份验证后,他们会被重定向到用户页面(user.aspx)。这是患者表(这是虚拟数据):

Patientid

登录:

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 username As String
    Dim password As String
    Dim bAuthethicated As Boolean
    username = txtuser.Text
    password = txtpassword.Text
    bAuthethicated = CheckUser(username, password)

    If bAuthethicated Then
        Response.Redirect("user.aspx", True)
    Else
        lblresult.Text() = "Incorrect Student Number and/or Password"
    End If

End Sub

会议:

Public Function CheckUser(username As String, password As String) As Integer
    Dim cmdstring As String = "SELECT * FROM Patient  Where Username=@USERNAME 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("@USERNAME", SqlDbType.NChar).Value = username
        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

登录后,用户被重定向到用户页面,标签显示PatientId:

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    Label1.Text = Session("PatientId")
End Sub

我希望此标签显示表格中的用户名而不是患者ID - 当我输入I PatientId时它会起作用,但是当我将其更改为用户名但它不再显示任何内容时,会话必须更改为用户名或者我仍然可以在patientId下举行会话并显示他们的用户名? - 我会在标签前面贴一条欢迎声明,但我不希望患者登录并查看他们的身份证我希望他们看到他们的用户名。

2 个答案:

答案 0 :(得分:1)

是的我相信你仍然可以在userID下保持会话但显示用户名。您没有将用户名添加到会话中。您必须以添加用户ID的方式添加它。

Session("username") = CInt(reader.Item("Username"));

然后显示你可以使用简单的:

Welcome <%Response.Write(Session("username"))%>

您可能需要稍微修改一下代码以满足您的需求,但类似的东西应该可以使它工作。

答案 1 :(得分:1)

也可以从数据库中检索用户名。 reader.Item()可用于引用查询返回的任何列:

While reader.Read()
    Session("PatientId") = CInt(reader.Item("PatientId"))
    Session("PatientUsername") = CStr(reader.Item("Username"))
    found = CInt(reader.Item("PatientId"))
End While`

...

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    Label1.Text = Session("PatientUsername")
End Sub`