用户登录使用会话不工作

时间:2011-11-09 10:42:27

标签: asp.net sql

我需要在登录后从数据库的表注册中检索一些数据到show.aspx页面。当我在注册后注册一个新用户并将其重定向到profile.aspx页面时,它工作正常(显示所有必需的数据)。但如果我注销并再次登录同一用户,那么页面show.aspx什么都不显示

我正在使用此代码进行用户登录:

Protected Sub btnLogin_Click1(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim admin As String = "Admin"
    Dim objcmd As New SqlCommand(("select * from Login where UserName='" + txtUserName1.Text & "' And Password='") + txtPassword1.Text & "'", con)
    Dim objReader As SqlDataReader

    con.Open()
    objReader = objcmd.ExecuteReader()
    If objReader.HasRows Then
        While objReader.Read()
            If [String].Compare(objReader("UserType").ToString(), admin) = 0 Then
                Session("UserName_Admin") = txtUserName.Text.ToString().Trim()
                Session("UserName") = txtUserName.Text.ToString().Trim()
                Response.Redirect("adminview.aspx")
            Else
                Session("UserName") = txtUserName.Text.ToString().Trim()
                Response.Redirect("show.aspx")
            End If
        End While
    Else
        lblLoginMessage.Text = "Login failed. Please try again"
    End If
    con.Close()
End Sub
show.aspx页面中的

代码

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

    If Session("UserName") Is Nothing Then

        Response.Redirect("registration.aspx")

    End If

    binddata()

End Sub
Sub binddata()

    Dim mycommand As New SqlCommand("SELECT * FROM registration where UserName = @UserName", con)
    mycommand.Parameters.AddWithValue("@UserName", Session("UserName").ToString())
    con.Open()
    ProfileData.DataSource = mycommand.ExecuteReader
    ProfileData.DataBind()
    con.Close()
End Sub
Protected Sub LinkButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Response.Redirect("upimg.aspx")
End Sub

我正在使用datalist从show.aspx页面中的数据库中检索数据。 有什么我需要在web.config文件中更改。将不胜感激帮助

2 个答案:

答案 0 :(得分:1)

您的退出代码是否清除了会话值?

我认为使用ASP.net Membership和Roles处理此功能会更好,因为它会更加安全和灵活。

Check out here an article explaining how to get setup here

答案 1 :(得分:0)

我完全赞同@John Mc,使用会员提供商会更好。

关于清除会话信息,您应该使用:

Session.Clear()
Session.Abandon()