求asp.net登录源码完全示例 (要vb.net代码)
具体要求:
输入用户名(yhm)和口令(kl)点一个按钮,到sql server看下输入的用户名和口令是否存在(这个查表判断过程我会,设为: if cunzai then ...)
如存在转到info.aspx,并在info.aspx页面上用response.write显示出用户名和口令(目的是想学会如何调用这两个变量)
如不存在,显示“对不起,您输入的帐户不正确。”并回到登录页面。通过这个实例我想学会:
1.如何输入用户名和口令并到sqlserver表中验证是否存在这个帐号
2.如何在登录后能在各个后续页面中访问到刚才输入的用户名和口令我想代码一定不长,请写完整,以前他们讲的我一直没听懂。谢谢!

解决方案 »

  1.   

    顶下,不用vb.net,
    登录很简单的,现成代码没有,网上到处都是,可以去搜下
      

  2.   


    If txtUserNo.Text = "" Then
          myMsgBox("用户名不能为空,请重新输入!")
        Else
          Dim MyConStr as String = WebConfigurationManager.ConnectionStrings(1).ConnectionString   '获取连接字符串
          Dim mycon As New SqlConnection(MyConStr)
          Dim mycom As New SqlCommand("select LOGIN,Password from madmoper Where LOGIN='" + txtUserNo.Text + "'", mycon)
          Dim myreader As SqlDataReader      If txtUserPwd.Text = "" Then myMsgBox("用户密码不能为空,请重新输入!") : Exit Sub      Try
            mycon.Open() : myreader = mycom.ExecuteReader
            If myreader.Read Then
              Session("OperName") = myreader("OperName")
              Session("OperNo") = myreader("OperNo")
              If txtUserPwd.Text <> myreader("Password") Then
                myMsgBox("用户密码错误,请重新输入!") : Exit Sub
              Else
                Session("rolekey") = myreader("RoleKey")
                Session("operdept") = myreader("OperDept")
                If Session("rolekey") = "" Then myMsgBox("您没有权根使用本系统!") : Exit Sub
                Response.Redirect("FrmMain.aspx")
              End If
            Else
              myMsgBox("无该帐号,请重新输入!")
              txtUserNo.Text = "" : txtUserPwd.Text = ""
            End If
            myreader.Close() : mycon.Close()
          Catch ex As Exception
            myTFstr = ex.Message
          End Try
    上面最简单的啦。
      

  3.   

    myMsgBox这个是弹出对话框的函数。  Private Sub myMsgBox(ByVal msg As String)
        Dim key As String = "Close"
        Dim script As String = "<script language=javascript>alert('" & msg & "');</script>"
        Dim csm As ClientScriptManager = Page.ClientScript
        If (Not csm.IsStartupScriptRegistered(key)) Then csm.RegisterStartupScript(Me.Page.GetType(), key, script, False)
      End Sub
      

  4.   


      strSQL1 = " select yhm,kl from Employee where yhm='" & TextBox1.Text & "' and kl='" & TextBox2.Text & "'"
            Dim connstr = System.Configuration.ConfigurationManager.AppSettings("connstring")
            Dim cn As SqlConnection = New SqlConnection(connstr)
            Dim comm As SqlCommand = New SqlCommand(strSQL1, cn)
            cn.Open()
            Dim dr As SqlDataReader = comm.ExecuteReader
            Dim HexStrToDecStr As New AD_Fun
            Dim OctetToHexStr As New AD_Fun
            If dr.Read() Then  '如果存在就有值便把该值赋给session
                Session("user_account") = TextBox1.Text
                session("user_Pass")=textbox2.text           
                Response.Redirect("info.aspx")
            Else         
              Response.Write("<script  language='JavaScript'>window.alert('对不起,您输入的帐户不正确');history.back(-1) ;</script>")
            End If
    而在后续中其实本身session就会带值到这个操作结束了~~~就是你除非你关闭IE一般session的值会一直存在~~~不过我觉得“yangpeiyu”考虑的比较全~~~o(∩_∩)o...我只是根据你的意思说下简单的代码~~
      

  5.   

    呵呵不好意思Dim HexStrToDecStr As New AD_Fun
            Dim OctetToHexStr As New AD_Fun
    这两段代码是我本来代码中用来抓取登陆域的 用了拿掉~~忽略~~
      

  6.   

    谢谢4楼,您的回复最接近我的要求。不过由于我比较菜,仍存有问题:
    1。在您的代码中没看到登录正确后去向哪个页面,只看到登录失败去哪页,该如何加上这个功能?
    2。假设登录正确后去info.aspx,如何避免用户直接输入网址调用info.aspx?
    3。在这个info.aspx中能调用存于session中的用户名和口令么?又如何保证在别的页面也能调用session中的用户名和口令?
    4。以下我引用您的代码,其中中标红的变量我不知道是什么时候声明的,代码里没见声明,怎么就开始用了?
    If txtUserNo.Text = "" Then
          myMsgBox("用户名不能为空,请重新输入!")
        Else
          Dim MyConStr as String = WebConfigurationManager.ConnectionStrings(1).ConnectionString   '获取连接字符串
          Dim mycon As New SqlConnection(MyConStr)
          Dim mycom As New SqlCommand("select LOGIN,Password from madmoper Where LOGIN='" + txtUserNo.Text + "'", mycon)
          Dim myreader As SqlDataReader      If txtUserPwd.Text = "" Then myMsgBox("用户密码不能为空,请重新输入!") : Exit Sub      Try
            mycon.Open() : myreader = mycom.ExecuteReader
            If myreader.Read Then
              Session("OperName") = myreader("OperName")
              Session("OperNo") = myreader("OperNo")
              If txtUserPwd.Text <> myreader("Password") Then
                myMsgBox("用户密码错误,请重新输入!") : Exit Sub
              Else
                Session("rolekey") = myreader("RoleKey")
                Session("operdept") = myreader("OperDept")
                If Session("rolekey") = "" Then myMsgBox("您没有权根使用本系统!") : Exit Sub
                Response.Redirect("FrmMain.aspx")
              End If
            Else
              myMsgBox("无该帐号,请重新输入!")
              txtUserNo.Text = "" : txtUserPwd.Text = ""
            End If
            myreader.Close() : mycon.Close()
          Catch ex As Exception
            myTFstr = ex.Message
          End Try
      

  7.   

    额 其实4楼的那个已经定义了呀~~~就是这句Dim myreader As SqlDataReader 然后他去查询了sql中的数据
     mycon.Open() : myreader = mycom.ExecuteReader 所以其实那个你不知道的变量是他在抓取查询出来的sql的值呢~~~
      

  8.   

    VB.NET一年多没接触了。语法忘记了
    就说几个点就好
    strSQL1 = " select yhm,kl from Employee where yhm='" & TextBox1.Text & "' and kl='" & TextBox2.Text & "'"
    这样来验证密码非常不好。为什么呢?去查查SQL注入。
    采用非加密的密码机制也不大好。算是一种学生系统