Хранение учетных записей пользователей в SQL таблице
Имеется MSSQL сервер, БД и таблица Users, в которой я храню пользователей вместе с хэш пароля. Создал процедуру создания пользователей где вставляю данные в Users, при этом имеется триггер на insert где хочу записывать инфу в другую таблицу. Вопросы возникли следующие:
- Нормальная ли это практика, хранить инфу о пользователе в таблице, не создавая логин и пользователя БД через конструкции Create Login.., Create User..)? Ведь сейчас запросы к БД выполняются от созданного вручную системного пользователя (для проверки соединения к БД, получения какой-либо информации на сайте).
- Как тогда получить информацию в триггере о том, кто в данный момент пытается вставить данные в Users, например. Потому как предопределенная переменная inserted в триггере содержит инфу только согласно полям таблицы, в которую происходит вставка. Надеюсь понятно описал суть, кто может подскажите, потому как появляются ощущения что делаю что-то не правильно.
Ответы (1 шт):
Давайте разберём пользователей.
- Пользователи Базы данных. (user/pass для доступа к БД)
- Пользователи приложения. (user/pass для доступа к приложению)
- Прочие пользователи. (user/pass для доступа к приложению, но только это другие сервисы)
- Пользователи системы (2 + 3)
Я так понимаю вам нужно знать какой пользователь системы создал что.
для этого держим Поля в каждой нужной вам таблице CreateBy, CreatedOn, ModefiedBy, ModefiedOn ... Хранить информацию о пользователе который ввел данные это нормально. Передавать в процедуре эти данные о пользователе который создаёт запись. procedure CreateUser(loginId, ...userdata). Зачем это делать в триггере не понятно конечно?
Если создается новый логин для доступа к приложениям то нужно указать кто из залогинившихся пользователей делает это действие. Понятно что в системе существует Admin которфй был заложен системой.