как заблокировать системный логин после 3 неудачных попыток в vb6? - PullRequest
0 голосов
/ 30 января 2010

Я уже сделал безопасный вход в систему, что в случае неудачи 3 раза программа будет остановлена. Однако я хочу сделать безопасный вход в систему, который заблокирует систему, и администратор должен будет войти в систему вместо этого.

Вот мой код:

Dim nCnt As Integer
Dim nCnt2 As String

Private Sub cmdOk_Click()

    nUsername = "username ='" & txtUsername.Text & "'"
    npassword = txtPassword.Text

    If nCnt < 2 Then
        With adoLog.Recordset
            .MoveFirst
            .Find nUsername
            If .EOF Then
                MsgBox "Access Denied" & vbCrLf & "Please try again." & vbCrLf & vbCrLf & "Warning: You only have " & nCnt2 & " attempt.", vbCritical, "Terror"""
                nCnt = nCnt + 1
                nCnt2 = nCnt2 - 1
                Label7.Caption = nCnt2
                txtUsername.Text = ""
                txtPassword.Text = ""
                txtUsername.SetFocus
            Else
                If adoLog.Recordset.Fields("password").Value = npassword And adoLog.Recordset.Fields("flag").Value = 1 Then
                    Call Change_Flag
                    MsgBox "Access Granted"
                    cUser = adoLog.Recordset.Fields("name").Value
                    cPosition = adoLog.Recordset.Fields("position").Value

                    With adoHistory_Login.Recordset
                        .AddNew
                        .Fields("name").Value = cUser
                        .Fields("position").Value = cPosition
                        .Fields("time_login").Value = Time()
                        .Fields("date_login").Value = Date
                        .Fields("date_logout").Value = Date
                        .Update
                        Me.Refresh
                        frmMain.Show
                        frmMain.SetFocus
                    End With

                    Unload Me
                    txtUsername.Text = ""
                    txtPassword.Text = ""
                Else
                    MsgBox "Access Denied" & vbCrLf & "Please try again." & vbCrLf & vbCrLf & "Warning: You only have " & nCnt2 & " attempt.", vbCritical, "Terror"""
                    nCnt = nCnt + 1
                    nCnt2 = nCnt2 - 1
                    Label7.Caption = nCnt2
                    txtUsername.Text = ""
                    txtPassword.Text = ""
                    txtUsername.SetFocus
                End If
            End If
        End With
    Else
        Call block
        End
    End If

End Sub

Private Sub Change_Flag()

    With adoLog.Recordset
        .Fields("flag").Value = 0
    End With

End Sub

Private Sub block()

    MsgBox "You already used all attempt." & vbCrLf & "This will terminate the application.", vbCritical, "Terror"

End Sub

Private Sub Form_Initialize()

    cmdOK.Enabled = False
    txtPassword.Enabled = False
    cmdRegister.Visible = False

    If adoLog.Recordset.RecordCount <> 0 Then
        cmdOK.Enabled = False
        txtPassword.Enabled = False
        txtUsername.Enabled = True
    Else
        cmdRegister.Visible = True
        txtUsername.Enabled = False
    End If

End Sub

Private Sub Form_Load()

    nCnt2 = 2
    Label7.Caption = nCnt2

End Sub

Ответы [ 2 ]

1 голос
/ 30 января 2010

Вам нужно будет где-то сохранить дополнительный флаг, чтобы указать, что вход запрещен, а затем проверить этот флаг перед попыткой входа. Вам также необходимо сохранить тип учетной записи и проверить, разрешено ли учетной записи входить в систему, даже если этот флаг установлен.

0 голосов
/ 10 февраля 2010

Вы хотите заблокировать полный ПК или имя пользователя, которое используется?

Добавьте новый столбец в набор записей для «IsLocked» и установите для него значение true после 3-х входов в систему (Убедитесь, что вы предоставили администратору возможность удалить его обратно).

Как только имя пользователя будет использовано, сначала проверьте «IsLocked» перед паролем и немедленно удалите его с соответствующим сообщением.

Кроме того, убедитесь, что IsLocked никогда не будет установлен на имя пользователя с правами администратора. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...