对不起,我还是Django的新手,希望这个问题不是不合适的。如何限制编辑记录到登录用户?
当我在我的模板如下:
<td><a href="/contact/edit/?id{{ item.id }}">{{ item.last_name }}</a></td>
通过点击姓氏的用户会被重定向到下面的链接,以便对其进行编辑。
http://127.0.0.1:8000/contact/edit/?id=1
但是,是什么阻止任何登录用户在浏览器中插入不同的ID并编辑不属于他的记录?
更新
我只是有一个想法,当我读了评论,并回答以下。我不能使用第三方应用程序,而只是为每个用户创建一个UserProfile,并在公司范围内附加一个独特的uuid.uuid1()。每次登录用户尝试编辑某些内容时,他独特的公司uuid也将作为附加参数传递给链接。
在编辑方面,它将收获此GUID并将其与登录的用户,看看它们是否匹配。如果他们匹配,他有权进行编辑,否则他将被重定向。
您认为如何?任何弱点?
在编辑页面的form.save()中,您需要检查用户是否有权编辑此用户。你不能让他们不要修改URL ......或者在编辑页面的页面加载时检查权限并在需要时重定向... – Tisho
是的,这是一个好主意。我有一个建议。看看我更新的问题。你怎么看? – Houman
为什么不简单地检查窗体视图中的权限并拒绝任何未经授权的操作,这是标准用法IMO – okm