2013-02-18 54 views
1

我正在使用Visual Studio 2010作爲我的IDE並使用​​3210創建一個簡單的網站我不知道是否有可能,但是我可以使用會話顯示剛登錄到我的LoginForm的用戶名到其他表單?顯示用戶名使用會話(ASP.NET)

我不是不夠好理解,但誰能告訴我,這是包含在會話中值的正確方法?我怎樣才能顯示它的其它形式?

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 
+0

我認爲你應該先在會話存儲的用戶名,然後才重定向他menus.aspx – AMember 2013-02-18 07:46:20

+0

我做到了,這是錯誤,我得到:「對象引用未設置爲對象的實例。」 – Danjor 2013-02-18 08:00:48

回答

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 
+1

你應該知道客戶可以很容易地欺騙你的cookie。 – Joe 2013-02-19 08:15:19

+0

你是什麼意思的惡搞?如果我使用cookie而不是其他備用代碼,是否有問題? – Danjor 2013-02-20 14:40:46

2

安裝在你的母版頁標籤(如果有的話),從您的會話將標籤分配的用戶名,它會出現在所有頁面。如果您沒有母版頁,則可以在頁面上設置標籤(您希望顯示用戶名),然後將標籤Text屬性設置爲會話中的值。

你存儲的值在會話是正確的方式,你應該重定向到Menu.aspx一旦值存儲在會話中,如:

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

.... 

並訪問他們,你可以這樣做:

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

抱歉,我沒有注意到它! >。<謝謝我會試試.... – Danjor 2013-02-18 07:57:39

+0

sir Habib我沒有Master Page,我應該做同樣的過程嗎? – Danjor 2013-02-18 08:00:16

+0

@Danjor,如果你沒有一個母版頁,則可以把標籤在任何頁面的要顯示的用戶名,並顯示它像上面 – Habib 2013-02-18 08:01:02

2

使用FormsAuthentication,那麼你可以簡單地把一個LoginName控制窗體上,還是從獲取用戶名HttpContext.Current.User.Identity.Name

+0

我是新手,我不明白,你已經使用的術語。這就像一個專業的方式... – Danjor 2013-02-18 08:03:36

+0

你不明白什麼?使用谷歌查找窗體身份驗證教程。 – Joe 2013-02-18 08:04:30

+0

但我只需要使用會話,這比會話更容易使用? – Danjor 2013-02-18 08:06:02