2015-07-28 3 views
0

Это может быть простой вопрос; извините, если этот вопрос является основным.Учетные записи пользователей, использующие PostgreSQL

Я пытаюсь создать систему учетных записей для веб-сайта с использованием Node.js (это все только для обучения!), И я уже создал формы, соединение Postgres и т. Д. Однако мне сейчас интересно как я должен хранить информацию о пользователях, такую ​​как их имя пользователя и пароль.

Я знаю, что учетные записи для баз данных Postgres можно создать с помощью CREATE USER name WITH PASSWORD '';, однако я не уверен, если я должен:

  1. Создайте учетную запись для доступа к базе данных и возвращает таблицу содержащей информацию о пользователе ; это то, что предназначена для системы учетных записей в Postgres, или это только для администрирования базы данных?
  2. Создайте пользователя с приведенной выше командой , когда кто-нибудь зарегистрируется, а затем добавьте дополнительную информацию либо в другой таблице.

Благодарим за помощь.

ответ

1

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

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

Стандартные функции безопасности базы данных включают объекты, которые могут обращаться к таблицам для просмотра, вставки, изменения или удаления данных. Когда каждый пользователь вашего приложения имеет роль базы данных, он должен иметь соответствующие разрешения. Вы можете управлять этим с помощью групповых ролей, но у вас возникнут другие проблемы. В качестве примера: у вас есть 1000 пользователей, которые хранят свои личные данные в таблице user_details. Эти пользователи должны иметь возможность просматривать и изменять свои собственные данные, но не те, что у других 999 пользователей. Вы можете установить это с представлением, которое фильтрует данные, принадлежащие к CURRENT_USER сеанса базы данных, но это очень много обслуживания. Легче - и более безопасно - иметь только одну учетную запись вашего веб-приложения и позволить вашей бизнес-логике делать фильтрацию.

Я бы предположил, что вы прочитали на database roles и безопасности, чтобы правильно понять, как настроить безопасную среду.

+0

Извините, что я придирчив, я новичок в PSQL! Каковы стандартные функции безопасности базы данных, которые вы упомянули, и делает ли вариант 2 из безопасности жертвоприношения Q и каким образом? Спасибо за вашу помощь! (редактирование: извинения, если для безопасности вы имеете в виду разрешение с помощью GRANT ACCESS одной роли, тогда я понимаю :)) –

+0

@NickBull См. обновленный ответ – Patrick

+0

Решает мой вопрос, а затем некоторые! Большое вам спасибо за помощь Патрик –

Смежные вопросы