⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 login.aspx.vb

📁 东软内部材料(三)程序设计导论
💻 VB
字号:
Imports System.Web.Security
Imports System.Text
Imports System.Security.Cryptography
Imports DBUtils

Public Class login
    Inherits System.Web.UI.Page

#Region " Web 窗体设计器生成的代码 "

    '该调用是 Web 窗体设计器所必需的。
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub
    Protected WithEvents txtPassword As System.Web.UI.WebControls.TextBox
    Protected WithEvents cmdLogin As System.Web.UI.WebControls.Button
    Protected WithEvents lblInfo As System.Web.UI.WebControls.Label
    Protected WithEvents txtLoginName As System.Web.UI.WebControls.TextBox
    Protected WithEvents Label3 As System.Web.UI.WebControls.Label
    Protected WithEvents Label1 As System.Web.UI.WebControls.Label
    Protected WithEvents Label2 As System.Web.UI.WebControls.Label

    '注意: 以下占位符声明是 Web 窗体设计器所必需的。
    '不要删除或移动它。
    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
        '不要使用代码编辑器修改它。
        InitializeComponent()
    End Sub

#End Region

    '该方法对网页进行初始化
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      
        If Not Page.IsPostBack Then
        
            '获取用户端的Cookie值,查看是否以前访问过。
            Dim objGetCookie As HttpCookie = Request.Cookies("BlueHill")

            Dim strLoginName As String = ""

            If Not objGetCookie Is Nothing Then

				'如果以前访问过,则获取以前保存的用户名。
                strLoginName = objGetCookie.Values("LoginName")
                txtLoginName.Text = strLoginName
            End If

        End If
    End Sub

	'当用户点击“登录”按钮时,执行该方法。
    Private Sub cmdLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLogin.Click
        
        '设立一个用户输入的密码是否正确的标志变量。
        Dim bValidPassword As Boolean = False

        '保存哈希后的数据库密码
        Dim arHashedSavedPass As Byte()
        
        'Dim userID As Integer
        
        '保存反映数据库操作正确与否的返回值
        Dim iRetValue As Integer


        '从数据库中获取用户正确的密码。
        iRetValue = DBUtils.Login.GetSavedPassword(txtLoginName.Text, arHashedSavedPass)

        If iRetValue = dbresult.success Then
        '如果数据库操作无误,则验证数据库密码和用户输入的密码。
        
            '对用户输入的密码进行 Unicode 编码。
            '在下面的代码中对用户输入的密码进行了哈希处理,采用的是 SHA-1 算法。
            '课本第二十四章有对散列数据和 SHA1Managed 类的详细介绍。
            Dim UE As New UnicodeEncoding
            Dim arSuppliedPass As Byte() = UE.GetBytes(txtPassword.Text)

            '对上一步得到的 Unicode 编码值进行哈希处理。
            Dim SHhash As New SHA1Managed
            Dim arHashSuppliedPass As Byte() = SHhash.ComputeHash(arSuppliedPass)

            '比较数据库密码和用户输入的密码两者的哈希值是否相等。
            Dim bHashesEqual As Boolean = True
            
            Dim x As Integer	'x 为循环变量
            For x = 0 To arHashSuppliedPass.Length - 1
                If arHashSuppliedPass(x) <> arHashedSavedPass(x) Then
                    bHashesEqual = False
                    Exit For
                End If
            Next

            If bHashesEqual Then
				'如果相等,则标志变量为真。
                bValidPassword = True

            Else
                '否则显示密码错误信息。
                lblInfo.Text = "密码错误,请重试!"
            End If

        Else
         '如果数据库操作失败,则说明登录名不存在,显示错误信息。

            lblInfo.Text = "用户不存在,请重试!"
        End If


        If bValidPassword Then
        '如果用户登录名和密码都正确,则在会话间保存用户登录信息。

			'保存用户登录名。
            Session("LogonName") = txtLoginName.Text

            Dim strLoginName As String = txtLoginName.Text
            
            '新建一个客户端的Cookie 值。
            Dim objNewCookie As New HttpCookie("BlueHill")
            
            '设定 Cookie 的有效日期
            objNewCookie.Expires = DateTime.Now.AddDays(30)
            
            '添加 Cookie 子项。
            objNewCookie.Values.Add("LoginName", strLoginName)
            
            '将 Cookie 值写入客户端
            Response.Cookies.Add(objNewCookie)

			'从数据库中获取该登录名所对应的员工编号。
            Dim iEmpID As Integer
            DBUtils.Login.GetEmployeeID(strLoginName, iEmpID)
            
            '在会话间保存该编号信息。
            Session("EmployeeID") = CStr(iEmpID)

            Dim sID As String = CStr(iEmpID)
            If (FormsAuthentication.GetRedirectUrl(sID, False). _
                IndexOf("default.aspx") = -1) Then
                '如果用户试图访问其他网页,则跳转到该网页。
                FormsAuthentication.RedirectFromLoginPage(sID, False)
            Else
				'如果用户访问的是登录网页,则跳转到“显示员工信息”网页。
                FormsAuthentication.SetAuthCookie(sID, False)
                Response.Redirect("EmployeeInfo/ShowEmpInfo.aspx")
            End If


        End If

    End Sub
End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -