0

MySQL をデータベースとして使用する VB でアプリケーションを作成しています。と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などのクラスを作成し、それらの値をそのクラス内のプロパティに割り当てると、アプリケーション全体からアクセスできるようになります。

編集:クラスを作成する

クラスの人

文字列としてのprivate_username

public shared property username as string get return _username end get set(value of string)_username = value end set

エンドクラス

これにより、アプリケーション全体でログイン情報を利用できるようになり、personオブジェクトを参照するだけになります。

于 2013-02-26T13:52:36.963 に答える
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
   .....

それは最善の方法ではないと思いますが、ニーズによっては十分かもしれません。ちゃあ

于 2013-02-26T14:06:09.177 に答える