Вывести текущего пользователя на уровень базы данных - PullRequest
0 голосов
/ 11 мая 2009

У меня есть классическая 3-уровневая сборка веб-приложений с MySQL и Tomcat.

Я хочу сохранить идентификатор создателя каждой записи базы данных для всех таблиц в столбце creator_id или просто зарегистрировать его где-нибудь. Текущий пользователь хранится в объекте http сессии. Изменить все запросы и передать параметр id создателя недопустимо.

Могу ли я решить проблему, используя триггеры, команды изменения таблицы и т. Д.? Каков наилучший способ сделать это?

PS. Взломы приемлемы и приветствуются.

Ответы [ 2 ]

2 голосов
/ 12 мая 2009

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

Краткий ответ: нет, вам придется использовать опцию «неприемлемо», если только вы не хотите создать пользователя базы данных для каждого пользователя сайта и не хотите, чтобы сайт открыл соединение с базой данных, используя их одного "общего" пользователя. Но это может в конечном итоге вызвать больше проблем, чем решить.

0 голосов
/ 12 мая 2009

Исходя из того, что вы говорите в своем вопросе, ваш логический идентификатор пользователя приложения отличается от идентификатора вашего соединения с базой данных. Если это так, как база данных может знать, какой у вас логический идентификатор пользователя приложения? если вы не передадите его, у него не будет возможности узнать, кто что делает. Вы говорите, что недопустимо изменять все запросы, чтобы передать это. Однако вам нужно будет только изменить сохранения, где вы хотите записать это значение "creator_id". Вам также нужно будет изменить эти таблицы. Надеюсь, у вас есть таблица, содержащая всех этих пользователей, и вы можете перейти к новому столбцу этой таблицы.

...