使用会话显示用户名(ASP.NET)

使用会话显示用户名(ASP.NET),asp.net,sql,vb.net,visual-studio-2010,oledb,Asp.net,Sql,Vb.net,Visual Studio 2010,Oledb,我正在使用Visual Studio 2010作为我的IDE,并使用Visual Basic创建了一个简单的网站,我不知道是否可能,但我可以使用会话将刚刚登录到我的登录表单的用户名显示到其他表单中吗 我还不足以理解它,但有人能告诉我,这是在会话中包含值的正确方法吗?我如何将其显示给其他表单 Protected Sub ImageButton1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) H

我正在使用
Visual Studio 2010
作为我的IDE,并使用
Visual Basic
创建了一个简单的网站,我不知道是否可能,但我可以使用会话将刚刚登录到我的登录表单的用户名显示到其他表单中吗

我还不足以理解它,但有人能告诉我,这是在会话中包含值的正确方法吗?我如何将其显示给其他表单

Protected Sub ImageButton1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton1.Click
        Dim connect As String = "Provider=Microsoft.ACE.OleDb.12.0;" & _
        "Data Source=C:\Users\cleanfuel\Documents\Visual Studio 2010\Projects\FinalProject4a2p\FinalProject4a2p\bin\DBFinalProject.accdb"
        Dim query As String
        query = "Select Count(*) From tblAccount Where Username = ? And UserPass = ?"
        Dim result As Integer = 0
        Using conn As New OleDbConnection(connect)
            Using cmd As New OleDbCommand(query, conn)
                cmd.Parameters.AddWithValue("", TxtUser.Text)
                cmd.Parameters.AddWithValue("", txtPass.Text)
                conn.Open()
                result = DirectCast(cmd.ExecuteScalar(), Integer)
            End Using
        End Using

        If result > 0 Then
            Response.Redirect("Menus.aspx")
            Session("User") = TxtUser.Text
            Session("Pass") = txtPass.Text
        Else
            Response.Write("<td>")
            Response.Write("<div align=""center"">")
            Response.Write("<font color='white'>")
            Response.Write("Unable to Login, Invalid Username or Password! </font>")
            Response.Write("</div>")
            Response.Write("</td>")
        End If
    End Sub
受保护的子ImageButton1\u单击(ByVal sender作为对象,ByVal e作为System.Web.UI.ImageClickEventArgs)处理ImageButton1。单击
Dim connect As String=“Provider=Microsoft.ACE.OleDb.12.0;”和_
“数据源=C:\Users\cleanfuel\Documents\Visual Studio 2010\Projects\FinalProject4a2p\FinalProject4a2p\bin\DBFinalProject.accdb”
将查询设置为字符串
query=“从tblAccount中选择Count(*),其中Username=?和UserPass=?”
将结果设置为整数=0
使用conn作为新的OLEDB连接(连接)
使用cmd作为新的OleDbCommand(查询,连接)
cmd.Parameters.AddWithValue(“,TxtUser.Text)
cmd.Parameters.AddWithValue(“,txtPass.Text)
康涅狄格州公开赛
结果=DirectCast(cmd.ExecuteScalar(),整数)
终端使用
终端使用
如果结果>0,则
Response.Redirect(“Menus.aspx”)
会话(“用户”)=TxtUser.Text
会话(“通过”)=txtPass.Text
其他的
回答。写(“”)
回答。写(“”)
回答。写(“”)
响应。写入(“无法登录,用户名或密码无效!”)
回答。写(“”)
回答。写(“”)
如果结束
端接头

在母版页中设置一个标签(如果有),将会话中的用户名分配给标签,它将出现在所有页面中。如果没有母版页,则可以在页面中设置标签(希望显示用户名),然后将label
Text
属性设置为会话中的值

您在会话中存储值的方式是正确的,一旦值存储在会话中,您应该重定向到
Menu.aspx
,如:

If result > 0 Then
            Session("User") = TxtUser.Text
            Session("Pass") = txtPass.Text
            Response.Redirect("Menus.aspx")

....
要访问它们,您可以执行以下操作:

labelUserName.Text = Session("User").ToString()

在母版页中设置标签(如果有),将会话中的用户名指定给标签,它将显示在所有页面中。如果没有母版页,则可以在页面中设置标签(希望显示用户名),然后将label
Text
属性设置为会话中的值

您在会话中存储值的方式是正确的,一旦值存储在会话中,您应该重定向到
Menu.aspx
,如:

If result > 0 Then
            Session("User") = TxtUser.Text
            Session("Pass") = txtPass.Text
            Response.Redirect("Menus.aspx")

....
要访问它们,您可以执行以下操作:

labelUserName.Text = Session("User").ToString()

使用
FormsAuthentication
,然后您只需在表单上放置一个
LoginName
控件,或者从
HttpContext.Current.User.Identity.Name
使用
FormsAuthentication
获取用户名,然后您只需在表单上放置一个
LoginName
控件,或者从
HttpContext.Current.User.Identity.Name

中获取用户名其他用户提供的答案也可以使用,但我找到了这个答案并成功获得了我想要的结果

这是我的密码:

Protected Sub ImageButton1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton1.Click
        Dim connect As String = "Provider=Microsoft.ACE.OleDb.12.0;" & _
        "Data Source=C:\Users\cleanfuel\Documents\Visual Studio 2010\Projects\FinalProject4a2p\FinalProject4a2p\bin\DBFinalProject.accdb"
        Dim query As String
        query = "Select Count(*) From tblAccount Where Username = ? And UserPass = ?"
        Dim result As Integer = 0
        Using conn As New OleDbConnection(connect)
            Using cmd As New OleDbCommand(query, conn)
                cmd.Parameters.AddWithValue("", TxtUser.Text)
                cmd.Parameters.AddWithValue("", txtPass.Text)
                conn.Open()
                result = DirectCast(cmd.ExecuteScalar(), Integer)
            End Using
        End Using

        If result > 0 Then
            Dim myCookie As HttpCookie = New HttpCookie("USER")
            myCookie.Value = TxtUser.Text
            Response.Cookies.Add(myCookie)

            Response.Redirect("Menus.aspx")
        Else
            Response.Write("<td>")
            Response.Write("<div align=""center"">")
            Response.Write("<font color='white'>")
            Response.Write("Unable to Login, Invalid Username or Password! </font>")
            Response.Write("</div>")
            Response.Write("</td>")
        End If

    End Sub

其他用户提供的答案也可以使用,但我找到了这个答案,并成功地得到了我想要的结果

这是我的密码:

Protected Sub ImageButton1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton1.Click
        Dim connect As String = "Provider=Microsoft.ACE.OleDb.12.0;" & _
        "Data Source=C:\Users\cleanfuel\Documents\Visual Studio 2010\Projects\FinalProject4a2p\FinalProject4a2p\bin\DBFinalProject.accdb"
        Dim query As String
        query = "Select Count(*) From tblAccount Where Username = ? And UserPass = ?"
        Dim result As Integer = 0
        Using conn As New OleDbConnection(connect)
            Using cmd As New OleDbCommand(query, conn)
                cmd.Parameters.AddWithValue("", TxtUser.Text)
                cmd.Parameters.AddWithValue("", txtPass.Text)
                conn.Open()
                result = DirectCast(cmd.ExecuteScalar(), Integer)
            End Using
        End Using

        If result > 0 Then
            Dim myCookie As HttpCookie = New HttpCookie("USER")
            myCookie.Value = TxtUser.Text
            Response.Cookies.Add(myCookie)

            Response.Redirect("Menus.aspx")
        Else
            Response.Write("<td>")
            Response.Write("<div align=""center"">")
            Response.Write("<font color='white'>")
            Response.Write("Unable to Login, Invalid Username or Password! </font>")
            Response.Write("</div>")
            Response.Write("</td>")
        End If

    End Sub


我认为您应该首先将用户名存储在会话中,然后再将其重定向到菜单。aspxI这样做了,这就是我得到的错误:“对象引用未设置为对象的实例。”我认为您应该首先将用户名存储在会话中,然后再将其重定向到菜单。aspxI这样做了,这就是我得到的错误:“对象引用未设置为对象的实例。”Habib先生,我没有母版页,我应该执行相同的过程吗?@Danjor,如果您没有母版页,你可以把标签放在任何一个页面上,你想显示用户名,并像上面那样显示。我有一个错误“对象引用未设置为对象的实例”。这是什么意思?这意味着你的会话在访问它之前没有被设置。哈?这是否意味着它没有从LoginForm中获得一些值?Habib先生,我没有母版页,我应该做同样的处理吗?@Danjor,如果你没有母版页,你可以将标签放在任何一个页面中,你想显示用户名并像上面那样显示它。我有一个错误“对象引用未设置为对象的实例。”这是什么意思?这意味着您的会话在访问之前没有被设置好。嗯?这是否意味着它没有从LoginForm中获得一些价值?我是新手,我不理解您使用的术语。这就像是一种专业的方式…你不明白什么?使用google查找有关表单身份验证的教程。但我只需要使用会话,这比会话更容易使用吗?是的,使用内置身份验证功能比使用自己的功能更容易。我是新手,我不理解您使用的术语。这就像是一种专业的方式…你不明白什么?使用google查找有关表单身份验证的教程。但我只需要使用会话,这比会话更容易使用吗?是的,使用内置身份验证功能比使用自己的身份验证功能更容易。您应该知道,客户端可以轻松欺骗您的cookie。欺骗是什么意思?如果我使用cookie而不是其他替代代码,会不会有问题?你应该知道,客户可以很容易地欺骗你的cookie。你说的欺骗是什么意思?如果我使用cookie而不是其他替代代码,是否有问题?