Извините, я до сих пор новичок в Django, надеюсь, вопрос не неуместен.Как ограничить редактирование записей зарегистрированному пользователю?
Когда у меня есть следующие в моем шаблоне:
<td><a href="/contact/edit/?id{{ item.id }}">{{ item.last_name }}</a></td>
Нажав на фамилию пользователя будет перенаправлен на следующую ссылку, чтобы изменить его.
http://127.0.0.1:8000/contact/edit/?id=1
Но что мешает любой зарегистрированный пользователь просто впрыснуть другой идентификатор там в браузере и редактировать запись, которая не принадлежит ему?
Update
Я просто была идея, когда я прочитал комментарий и ответить ниже. Вместо того, чтобы использовать стороннее приложение, я не могу просто создать UserProfile для каждого пользователя и прикрепить уникальную компанию uuid.uuid1(). Каждый раз, когда пользователь loggedin пытается что-то редактировать, его уникальная компания uuid также будет передана по ссылке в качестве дополнительного параметра.
На стороне редактирования он собирает это руководство и сравнивает его с зарегистрированным пользователем и видит, совпадают ли они. Если они совпадают, он имеет право продолжить редактирование, иначе он будет перенаправлен.
Как вы думаете? Какие-нибудь недостатки?
На странице с формой.save() на странице редактирования вам необходимо проверить, имеются ли у пользователя разрешения на редактирование этого пользователя. Вы не можете заставить их не изменять URL-адрес ... Или на странице загрузки страницы редактирования, чтобы проверять разрешения и перенаправлять при необходимости ... – Tisho
Да, это хорошая идея. У меня есть предложение. Проверьте мой обновленный вопрос. Как вы думаете? – Houman
Почему бы просто не проверить разрешение в представлении формы и не разрешить любую неавторизованную операцию, это стандартное использование IMO – okm