【问题标题】:i need a session variable to change from page to page as i move from one page to another vb.net当我从一个页面移动到另一个 vb.net 时,我需要一个会话变量来从一个页面更改为另一个页面
【发布时间】:2010-02-02 20:04:13
【问题描述】:

我对此并不陌生。我有 4 页。 login.aspx、account.aspx、settings.aspx 和 flyers.aspx。 它全部在带有 sql server 后端的 vb.net 中编程。 在我的第一个页面 login.aspx 我在 .vb 页面中有此代码-

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

你可以看到它需要 session.item("webuser") 作为电子邮件。这在这个页面上很好。在下一个页面 account.aspx 上,它需要将 email 替换为上次登录的用户的 ID,在 settings.aspx 页面中,它需要将用户的 ID 替换为该用户的配置文件 ID。所有这些表都在后端并有数据,但问题是我缺乏知识。 我如何使会话中有不同的变量。

【问题讨论】:

    标签: vb.net session asp.net


    【解决方案1】:

    哎呀。您的代码存在严重的安全问题:

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

    此外,您应该使用 Membership 提供程序和基于表单的身份验证: http://support.microsoft.com/kb/301240

    最后,设置会话值只需说Session( "Value Name" ) = value

    【讨论】:

      【解决方案2】:

      reiut 考虑摆脱内联 sql 并使用 exec。查看存储过程并使用命令对象传递参数。密码也不应该以纯文本形式存储。

      对于会话,它们只是可以在 page_load 事件中更改的变量。

      例如,

      Session("FirstName") = "Jon"

      会话 FirstName 的值为 Jon。只需将其重置即可在另一个 aspx 页面中轻松更改它:

      在另一个页面中:

      Session("FirstName") = "黎明"

      试试看。

      【讨论】:

        【解决方案3】:

        最好的方法实际上是创建一个类对象(在您阅读了@Nissan Fan 的链接并开始使用某种安全身份验证之后)并将序列化的类对象存储到会话中。您的类对象应该继承 System.Security.Principal.GenericIdentity 类或至少实现 IIdentity。然后,您可以将其从会话中取出,强制转换,然后直接访问对象的属性(用户名/电子邮件/其他)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-02
          • 1970-01-01
          相关资源
          最近更新 更多