Извините, если это элементарный вопрос, но я только начал рассматривать, правильно ли я делал это правильно , Обычно, когда пользователь пытается обновить базу данных, я просто использую его имя пользователя в качестве ключа в пользовательской таблице, а затем основываю все операции на этом. Однако я просто понял, что хитрый пользователь МОЖЕТ быть в состоянии отправить запрос, используя другое имя пользователя, таким образом, обходя эту слабую форму обеспечения прав. Итак, действительно ли мой вопрос заключается в том, как я могу запретить пользователю потенциально представлять деструктивное действие против базы данных под другим идентификатором пользователя?Как обеспечить, чтобы пользователь в Rails мог обновлять/вставлять/удалять только свою запись в базе данных
0
A
ответ
2
Вы должны сохранить идентификатор текущего пользователя в сеансе, что нелегко манипулировать.
Я обычно относятся к объектам через отношение на объекте пользователя:
current_user.fragile_records.find(params[:id]).destroy
Это читаемый и простой способ сделать тест на владение.
http://guides.rubyonrails.org/security.html Удивительно хорошо читать по этому вопросу.
Есть много готовых решений для maintaining user identity (authentication) и ensuring user has clearance for an action (authorization) в Rails.
Смежные вопросы
- 1. Фильтрация источника данных, чтобы пользователь мог видеть только свою информацию.
- 2. Как обеспечить единую запись в базе данных с помощью рельсов?
- 3. Как обеспечить, чтобы пользователь мог голосовать только один раз в 24 часа
- 4. Как обеспечить, чтобы только один пользователь мог выполнить кусок кода в то время
- 5. Как обеспечить, чтобы класс мог быть создан только Spring?
- 6. только один пользователь в базе данных
- 7. Как обеспечить, чтобы пользователь мог нажимать кнопку только один раз для каждого сообщения?
- 8. Rails: найти запись в базе данных
- 9. Убедитесь, идентифицированный пользователь может обновлять только свою собственную запись
- 10. как насчет того, чтобы пользователь мог войти в свое время?
- 11. Как обеспечить, чтобы выбранная дата была одинаковой в базе данных?
- 12. Как обеспечить, чтобы пользователь мог вводить любой тип данных (str, float, int, boolean ...)?
- 13. Как обеспечить, чтобы пользователь представил только текст на английском языке
- 14. Rails проверяет, существует ли запись в базе данных
- 15. Блокировка таблицы, чтобы только один пользователь мог обновить ее
- 16. , как обеспечить, чтобы пользователь не мог перенаправить на другой элемент в дочернем движке из родительского механизма.
- 17. Я хочу, чтобы пользователь мог загрузить страницу
- 18. Пользователь только что подтвержден в Rails Devise
- 19. Как обеспечить, чтобы пользователь регистрировался в системе на уровне контроллера?
- 20. Как обеспечить, чтобы xml.dom.minidom мог анализировать собственный результат?
- 21. Codeigniter - Позволяет пользователю удалять из базы данных только если пользователь создал запись в базе данных
- 22. Rails Mongoid Как я могу проверить новую запись в базе данных, чтобы предотвратить дублирование?
- 23. как обеспечить, чтобы только один поток мог получить доступ к экземпляру типа коллекции за один раз
- 24. preopulating admin пользователь в базе данных с плагином authlogic rails
- 25. Как получить данные из Paypal, чтобы я мог соответствующим образом изменить свою базу данных MySQL?
- 26. Как обеспечить соблюдение правил целостности данных в моей базе данных?
- 27. Запись не сохранена в базе данных в ruby on rails?
- 28. Создайте запись в базе данных Heroku
- 29. Как обеспечить, чтобы только данный модуль в моем приложении мог изменять свойства моего объекта?
- 30. Как обеспечить безопасность Jenkins, чтобы пользователь не мог выполнять команды под учетной записью другого пользователя.
отлично! Спасибо за ссылку! – ennuikiller