1

IDE として使用Visual Studio 2010し、可能かどうかわからない単純な Web サイトを作成して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
4

3 に答える 3

3

マスター ページにラベルを設定し (ある場合)、セッションのユーザー名をラベルに割り当てると、すべてのページに表示されます。マスター ページがない場合は、ページにラベルを設定し (ユーザー名を表示する必要があります)、ラベルTextプロパティをセッションの値に設定します。

セッションに値を保存する方法は正しいです。Menu.aspx値がセッションに保存されたら、次のようにリダイレクトする必要があります。

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

....

そして、それらにアクセスするには、次のことができます:

labelUserName.Text = Session("User").ToString()
于 2013-02-18T07:47:19.943 に答える
2

を使用すると、フォームにコントロールをFormsAuthentication配置LoginNameしたり、UserName を取得したりできます。HttpContext.Current.User.Identity.Name

于 2013-02-18T08:02:37.717 に答える
0

他のユーザーが提供する回答も使用できますが、これを見つけて、希望する結果を得ることができました。

ここに私のコードがあります:

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

表示したい値が表示されず、常に同じエラーが何度も表示されるため、満足できないため、セッションの代わりに HTTPcookie を使用しました。

表示するコードは次のとおりです。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        If Request.Cookies("USER") Is Nothing Then
            Label7.Text = "No Account Logged In"
        Else
            Dim aCookie As HttpCookie = Request.Cookies("USER")
            Label7.Text = Convert.ToString(Server.HtmlEncode(aCookie.Value))
        End If
    End Sub
于 2013-02-19T06:53:04.317 に答える