Совместное использование пользователей между 2 базами данных - PullRequest
1 голос
/ 12 марта 2011

Я занимаюсь разработкой этого приложения на PHP. Приложение будет состоять из административной области, которая также будет содержать функции сотрудников. Другая часть приложения - веб-сайт для клиентов.

Область администрирования имеет собственную базу данных. Веб-сайт для клиентов также имеет свою собственную базу данных.

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

Клиентский веб-сайт также позволяет клиентам регистрироваться, и он хранится в пользовательской таблице в базе данных веб-сайтов клиентов.

Мне нужно, чтобы сотрудники могли заходить на сайт клиента. У них также должны быть разрешения, которые определяют, какие части веб-сайта клиента они могут изменить и какие строки в базе данных веб-сайта клиента они могут изменить.

Какой лучший способ реализовать это?

Приветствия:)

Ответы [ 2 ]

1 голос
/ 12 марта 2011

Я бы рекомендовал всегда объединять, когда это возможно, таблицы, использующие одну и ту же концепцию (пользователи здесь).

Проблема здесь заключается в безопасности доступа к данным , независимо от того, как ваши данныесохранено (одна или две таблицы, одна или две базы данных).

С MySQL (и многими другими распространенными СУБД) вы можете:

  • Создать учетную запись MySQL, которая будетиметь доступ только к некоторым таблицам, выполнять только некоторые операции над ним (например, только SELECT), получать доступ только к некоторым столбцам и т. д.

  • Скрыть таблицу из учетной записи MySQL и предоставить только доступ кпросмотр этой таблицы (фильтрация столбцов / результатов таблицы).

Какова бы ни была ваша структура данных, вам потребуется проверить некоторые данные о сотрудниках (логин, пароль, разрешения и т. д.) и ваш коддля этого придется использовать учетную запись MySQL с достаточными привилегиями.

Поэтому я бы посоветовал вам держать пользователей в одной таблице, добавлять таблицы для описания ролей (сотрудник, клиент и т. д.) и кодировать с умом.

Хранить в мии решить отдельно дизайн базы данных и вопросы безопасности доступа к данным проблемы.Безопасность доступа к данным не должна приводить вас к нелогичным решениям при проектировании базы данных.

0 голосов
/ 12 марта 2011

Вы можете сделать что-то вроде этого:

$sql = "SELECT * FROM employeedb.employee_user_table WHERE employee_id = '???'";

Как проблема с комментарием от автора темы. Для двух пользовательских таблиц вы можете использовать такое решение:

  • создать новую таблицу. например: global_user_table с полем:

    • user_id
    • передача
    • table_source (источник реальной таблицы)
    • is_special_user (или что-то в этом роде)
    • additional_field1
    • additional_field2
    • и т. Д. И т. Д.
  • каждый раз, когда пользователь входит в систему, он проверяет эту таблицу и сохраняет table_source в сеансе для дальнейшего использования.

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