我在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'行。
感谢您的帮助。
答案 0 :(得分:0)
使用会话或应用程序变量来保持您的数据可以通过我们的应用程序访问,或者您可以创建一个类如Person信息并将这些值分配给该类中的属性,并且它可以在整个应用程序中访问
编辑: 创建一个类
CLASS PERSON
private _username as string
public shared property username as string 得到 return _username 结束了 set(字符串的值) _username = value 结束集
结束课程
这将使整个应用程序可用的登录信息仅引用person对象。
答案 1 :(得分:0)
通过简单的方法,您可以设置一个Public变量来保存登录信息
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
.....
我认为这不是最好的方法,但根据您的需要,它可能就足够了。 CYA