Несколько сайтов и аутентификаций с одной базой данных - PullRequest
0 голосов
/ 23 мая 2018

Это может быть простой вопрос, но я впервые настраиваю веб-сайт таким образом, и мне нужен совет, пожалуйста.

Настройка:

  • У меня есть два веб-сайта: WS1 и WS2, каждый с разными именами доменов.Они оба указывают на один и тот же IP-адрес с помощью блоков серверов nginx, и для каждого доменного имени устанавливается SSL.Я буду использовать Express.js с ArangoDB (где я могу добавить дополнительные базы данных в ArangoDB для разделения двух сайтов в бэкэнде, если необходимо)

Проблема:

  • Иногда эти два сайта будут получать доступ к одной и той же информации из базы данных, и я предпочел бы НЕ дублировать данные, но они будут иметь разные аутентификации.Каждый сайт будет иметь разные аутентификации аккаунта и ограничения страницы для каждого участника каждого сайта.

Вопрос:

  • Как мне настроить это?обеспечить безопасность, чтобы одна учетная запись не получила доступ к любому другому сайту?Нужны ли мне две отдельные платформы в каждом блоке сервера?Должен ли я создать две базы данных?Лучшие рекомендации, пожалуйста?

1 Ответ

0 голосов
/ 23 мая 2018

Это зависит от вашей структуры авторизации.

Аутентификация идентифицирует, кто получает доступ к вашему сайту, и частью этой идентичности является пользователь, компания / домен и роль / группа, которую онипринадлежат.

Авторизация - это описание того, что этому пользователю, компании / домену или роли / группе разрешен доступ.

Возможно, вы знаете о файлах cookie и имени пользователя/ пароли для идентификации пользователя.Пользователь хранится в базе данных и сопоставляется с компанией / доменом, к которому он принадлежит.и пользователь также сопоставляется с ролью / группой, к которой он принадлежит.

select userID, company from users where username = ?, $username

select group from groups where userID = ?, $userID

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

select content from companyPages where company = ?

или

select content from groupPages where group in (select group from groups where userID = ?))

У вас могут быть пользователи из нескольких компаний / доменов, использующие одни и те же группы.

И собирая их вместе:

Select content from pages WHERE group in (select group from groups where userID= ?) AND company = (select company from users where userID=?);

В основном вам необходимоопределите свою схему авторизации и сопоставьте ее с вашей моделью данных.

...