vb.net
  • session
  • asp.net
  • 2010-02-02 129 views 0 likes 
    0

    我對此很陌生。我有4頁。 login.aspx,account.aspx,settings.aspx和fliers.aspx。它的所有程序都在vb.net中用sql server後端編程。 我firstr頁面,login.aspx的我有這樣的代碼中的.vb頁面 -我需要一個會話變量,從一個頁面到另一個頁面,因爲我從一個頁面移動到另一個頁面vb.net

    Dim SQL As String = "SELECT * FROM table1 WHERE email='" + Me.txtUserName.Text + "' AND password='" + Me.txtPassword.Text + "' " 
    ExecuteNonQuery(SQL) 
    SqlCmd = New SqlCommand(SQL, SqlCnn) 
    SqlDR = SqlCmd.ExecuteReader 
    If SqlDR.HasRows Then 
        Do While SqlDR.Read() 
         Label1.Text = "successfully logged in" 
         Dim webUser As New webUser(SqlDR("email"), Session.Item("sqlcnn")) 
         Session.Item("webUser") = webUser 
         isValidUser = True 
        Loop 
    Else 
        Label1.Text = "Failed to login" 
    End If 
    

    如u可以看到它採用session.item( 「WEBUSER」)的電子郵件。在這個頁面上這很好。在下一頁是account.aspx時,它需要用登錄用戶的ID和settings.aspx頁面中的電子郵件地址替換電子郵件,它需要用該用戶的個人資料ID替換用戶的ID。所有這些表在後端都有數據,但問題是我缺乏知識。 我如何讓會話中有不同的變量。

    回答

    1

    哎呀。你有你的代碼巨大的安全問題:

    SQL注入攻擊 http://msdn.microsoft.com/en-us/library/ms998271.aspx

    此外,你應該使用基於表單的成員資格提供程序和身份驗證: http://support.microsoft.com/kb/301240

    最後,設置會話值簡單地說Session("Value Name") = value

    +1

    +100如果我可以。 – 2010-02-02 20:08:08

    0

    reiut考慮擺脫內聯sql和使用exec。查看存儲過程並使用命令對象傳遞參數。密碼也不應該作爲純文本存儲。

    至於會話,它們只是可以在page_load事件中更改的變量。

    例如,

    會議( 「姓」)= 「喬恩」

    會話,姓,具有值喬恩。它可以很容易地在另一個aspx頁面只需通過重置它改變:

    在另一頁:

    會議(「名字」)=「曙光」

    試試吧。

    0

    最好的方法實際上是創建一個類對象(在閱讀@Nissan Fan中的鏈接並開始使用某種安全認證之後)並將序列化的類對象存儲到會話中。你的類對象應該繼承System.Security.Principal.GenericIdentity類或者至少實現IIdentity。然後你可以將它從會話中取出,投射出來,並直接訪問你的對象的屬性(用戶名/電子郵件/任何)。

    相關問題