Как настроить разные уровни доступа в приложении vb.net на основе таблицы имен пользователей SQL? - PullRequest
0 голосов
/ 03 сентября 2011

Я хочу сделать разные уровни доступа для программы vb.net, которую я пишу. У меня есть база данных под названием "Stratocast". Я хочу показать конкретную форму для записей в этой таблице с проверенным «IsManager» и другую специальную форму для тех, с проверенным «IsAdmin».

Я использую сервер MySql и Visual Basic 2010 Express

EDIT:

Чтобы выяснить какие-либо неправильные представления о моем посте, я поясню далее:

В моем приложении vb.net у меня есть форма входа в систему с двумя текстовыми полями; Один для имени пользователя и один для пароля. У меня также есть три другие формы, одна называется "frmAdmin", другая называется "frmManager", а другая называется "frmEmployee".

В моей базе данных есть таблица «employee» со столбцами «name», «title», «IsManager», «IsAdmin», «Username» и «Password».


IsManager и IsAdmin оба являются логическими столбцами

  • Это означает, что их значения могут быть только 0 или 1, а результат отображается в виде флажка.

Когда сотрудник входит в это приложение, я хочу, чтобы он проверил, является ли сотрудник руководителем, администратором или обычным сотрудником без дополнительных прав. Если сотрудник является менеджером, я хочу показать "frmManager". Если сотрудник является администратором, я хочу показать "frmAdmin". И если у сотрудника нет никаких дополнительных прав, то я хочу показать "frmEmployee".

Я бы хотел, чтобы конфигурация для проверки уровня доступа была ограничена одной таблицей, но если лучше иметь отдельные таблицы для каждого уровня доступа (т. Е. Таблицы с именами Admin, Manager и Employee), то я тоже не буду учитывать это .

спасибо!

Ответы [ 2 ]

4 голосов
/ 03 сентября 2011

Быстрое обновление: http://www.vbmysql.com/articles/vbnet-mysql-tutorials/the-vbnet-mysql-tutorial-part-1

Кажется, вам нужно немного больше информации о том, как работать с базами данных и как обеспечить целостность данных в базе данных.Приведенная выше ссылка представляет собой серию из 6 частей по работе с Vb.NET и MySQL.Я бы посоветовал взглянуть на него - он ответит на большинство / все ваши вопросы.


Я немного растерялся из-за того, что именно вы пытаетесь получить в качестве конечного результата.

Я вижу, что вы хотите отобразить другую форму в зависимости от того, является ли сотрудник менеджером или администратором, и вы, вероятно, хотите отобразить обе эти формы, если сотрудник является администратором И менеджером.

Итак, у вас есть результат SQL-запроса.Вам не нужен логический if / then для этой части, поскольку вы возвращаете данные, основанные на идентификаторе сотрудника (скажите, пожалуйста, у вас есть поле PK ID).

Я бы хотел создать группуэлементов управления, которые являются скрытыми / видимыми в зависимости от разрешения этого сотрудника.

Разработка базы данных;

Table: Employee
EmployeeID, int PK, not null
Name, varchar, null
Password, varchar, null
Title, varchar, null
IsManager, bit, null
IsAdmin, bit, null

** Используете ли вы Salt для ваших паролей / или какого-либо шифрования?основываясь на приведенном ниже псевдокоде, я сделаю это, так как пароли не зашифрованы и позволим вам с этим справиться.

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

  Select EmployeeID, Name, Title, IsManager, IsAdmin FROM employee Where Name = 'UserName' and Password = 'Password

Где «Имя пользователя», «Пароль» - это ваши переменные, которые необходимо передать.пример:

Select EmployeeID, Name, Title, IsManager, IsAdmin FROM employee Where Name = 'Ryan.Ternier' and Password = 'Trogdor'

Это вернет вам пользователя с вашими флагами IsAdmin и IsManager.Если у вас есть класс Employee, создайте его экземпляр, заполните его и верните в презентацию, чтобы он мог выполнять формы (пример ниже).

Public Sub SetForms(ByVal emp As Employee)
    If emp.IsManager Then
        Dim frm As New ManagerForm
        frm.Show()
    End If

    If emp.IsAdmin Then
        Dim frm As New AdminForm
        frm.Show()
    End If

    Dim frm As New EmployeeForm
    frm.Show()

End Sub

Я бы порекомендовал этот путь сделать.

Форма входа передает имя пользователя / пароль в метод входа, который возвращает сотрудника.Если сотрудник не имеет значения null / ничего хорошего, если он имеет значение NULL / ничего, учетные данные неверны.

1 голос
/ 06 сентября 2011

Основываясь на ваших ответах, я бы рекомендовал изучить базовые концепции Visual Basic, SQL, логинов и т. Д.

Вот одна из книг, которая неплохо подходит для начинающих изучать эти концепции.Вы получите общее представление о том, как все делается.

Книга

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