VB.NET和一个登录会话'

时间:2013-02-26 13:38:57

标签: vb.net

我在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'行。

感谢您的帮助。

2 个答案:

答案 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