0

我正在 VB 中制作一个使用 MySQL 作为数据库的应用程序。我有一个frmMain和一个名为frmLogin. 当我登录时,如果用户输入了正确的用户名和密码,登录表单会检查数据库。我希望他们返回frmMain并将信息(例如,id、登录名和角色)作为字符串(或更安全的东西)传递,frmMain但我不知道最好的方法是什么。

这是我的代码frmLogin(我知道 sql 注入):

Private Sub btnLogin_Click(sender As System.Object, e As System.EventArgs) Handles btnLogin.Click
    Dim loginResult As String

    If String.IsNullOrEmpty(TextGebruikersNaam.Text) Or String.IsNullOrEmpty(TextGebruikersPass.Text) Then
        MsgBox("Voer uw gebruikersnaam en wachtwoord in om in te loggen. ", MsgBoxStyle.Exclamation, "Foutmelding")
        TextGebruikersNaam.Focus()
    Else
        Dim newPass As String
        newPass = HashString.getSHA1Hash(TextGebruikersPass.Text)

        loginResult = SQLHook.Counter("SELECT COUNT(*) FROM tblgebruikers WHERE GebruikersNaam='" & TextGebruikersNaam.Text.Replace("'", "''") & "' AND GebruikersPass='" & newPass.Replace("'", "''") & "'")

        If loginResult = 1 Then
            ' Login is cewl, now set some strings and unload this form so user
            ' could continue on frmMain.
        Else
            MsgBox("De gebruikersnaam of wachtwoord is onjuist.", MsgBoxStyle.Exclamation, "Foutmelding")
            TextGebruikersPass.Text = ""
            TextGebruikersPass.Focus()
        End If
    End If
End Sub

是否有安全的方法来设置带有用户名和角色的(例如)字符串(在数据库内部也作为“GebruikersRole”行。

感谢您的帮助。

4

2 回答 2

1

使用会话或应用程序变量来保持您的数据可通过我们的应用程序访问,或者您可以创建一个类似 Person info 的类并将这些值分配给该类中的属性,并且可以在整个应用程序中访问它

编辑:创建一个类

类人

私有_用户名作为字符串

公共共享属性 username as string get return _username end get set(value of string) _username = value end set

结束类

这将使登录信息可用于整个应用程序,只需引用人员对象。

于 2013-02-26T13:52:36.963 回答
0

以一种简单的方式,您可以设置一个公共变量来保存登录名和信息

Public Class frmLogin
Public Login as String
Public Informations as String

Login_Click
....
If loginResult = 1 Then
   Login = "xxx"
   Informations = "yyy"
   Me.Visible = False
   frmMain.ShowDialog()
Else ....

现在在 frmMain 中,使用 frmLogin.Variable 获取值。

If frmLogin.Login = "xxxx" Then
   .....

我认为这不是最好的方法,但根据您的需要可能就足够了。青色

于 2013-02-26T14:06:09.177 回答