Как авторизировать пользователей для VB.NET с MS ACCESS?
Когда я выбрал "администратор" из выпадающего списка, он вошел в систему напрямую, без ввода имени пользователя и пароля. пожалуйста, помогите!!
Вот мои коды:
Public Class frmLogin Dim sqlcode As String Dim connstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Jim Clinton Amarga\Desktop\Class Records\Class Records\bin\Debug\dbClassRecords.accdb" end class Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click If cmbLoginType.Text = "Administrator" Then Dim sqlLoginCode As String = "select * from tblusers where User_username = '" & txtUsername.Text & "' AND User_password = '" & txtPass.Text & "' AND User_usertype = '" & "Administrator" & "' " Dim loginCommand As New OleDb.OleDbCommand(sqlLoginCode) loginCommand.Connection = New OleDb.OleDbConnection(connstring) loginCommand.Connection.Open() loginCommand.ExecuteNonQuery() Dim da As New OleDb.OleDbDataAdapter(loginCommand) Dim ds As New DataSet da.Fill(ds, "tblusers") MessageBox.Show("Welcome Admin") frmAdmin.Show() Me.Hide() ElseIf cmbLoginType.Text = "Teacher" Then Dim sqlLoginCode As String = "select * from tblusers where User_username = '" & txtUsername.Text & "' AND User_password = '" & txtPass.Text & "' AND User_usertype = '" & "Teacher" & "' " Dim loginCommand As New OleDb.OleDbCommand(sqlLoginCode) loginCommand.Connection = New OleDb.OleDbConnection(connstring) loginCommand.Connection.Open() loginCommand.ExecuteNonQuery() Dim da As New OleDb.OleDbDataAdapter(loginCommand) Dim ds As New DataSet da.Fill(ds, "tblusers") MessageBox.Show("Welcome Teacher") frmTeacherForm.Show() Me.Hide() Else MessageBox.Show("Login Failed!!") txtUsername.Clear() txtPass.Clear() txtUsername.Focus() End If End Sub
Моя база данных MS ACCESS:
tblUsers
User_id | первичный ключ
User_fname | короткий текст
User_lname | короткий текст
User_username / короткий текст
User_password | короткий текст
User_usertype | короткий текст
Что я уже пробовал:
Содержание этого блока было точно таким же, как и описание проблемы. См. раздел "описание проблемы" (комментарий Брайана Тана).
[no name]
Вы, вероятно, захотите на самом деле проверить результат вашего запроса....
F-ES Sitecore
Там нет кода, где вам нужен пароль, просто пройдите через код в отладчике. Вы просто создаете оператор SELECT, выполняете его, но игнорируете результаты, и это все, что вы делаете. Какая часть вашего кода заставляет вас думать, что он прервет вход в систему?
Bryian Tan
Я согласился с вашим наблюдением :). Сначала я думал, что удалил его, изменив вопрос.
Richard Deeming
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]
Richard Deeming
Кроме того, вы храните пароли в виде обычного текста. Не делай этого.
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хеширование паролей - все правильно[^]
Jim Clinton
Dim accessReader как OleDbDataReader
accessReader = loginCommand.Метода executereader
Если accessReader.Читать Далее
Если accessReader
--------------------------------------------------------------------------------------
invalidoperationexecption был обработан
Необработанное исключение типа ' System.InvalidOperationException ' произошло в System.Data.dll
Дополнительная информация: ExecuteReader требует открытого и доступного соединения. Текущее состояние соединения закрыто.