2011-10-30 1 views
0

Извините, если это элементарный вопрос, но я только начал рассматривать, правильно ли я делал это правильно , Обычно, когда пользователь пытается обновить базу данных, я просто использую его имя пользователя в качестве ключа в пользовательской таблице, а затем основываю все операции на этом. Однако я просто понял, что хитрый пользователь МОЖЕТ быть в состоянии отправить запрос, используя другое имя пользователя, таким образом, обходя эту слабую форму обеспечения прав. Итак, действительно ли мой вопрос заключается в том, как я могу запретить пользователю потенциально представлять деструктивное действие против базы данных под другим идентификатором пользователя?Как обеспечить, чтобы пользователь в Rails мог обновлять/вставлять/удалять только свою запись в базе данных

ответ

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.

+0

отлично! Спасибо за ссылку! – ennuikiller

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