如果一个用户在使用会话身份验证时更改了前端的信息,那么他是否可以作为另一个用户闯入django服务器并执行操作?

如果一个用户在使用会话身份验证时更改了前端的信息,那么他是否可以作为另一个用户闯入django服务器并执行操作?,django,django-models,django-rest-framework,django-views,django-templates,Django,Django Models,Django Rest Framework,Django Views,Django Templates,嘿,伙计们,我很困惑,现在正在考虑这个问题,我将当前用户的用户名存储在会话存储中,我有另一个页面,其中我使用存储的用户名进行api调用,它可以是任何请求 例如,一篇文章只能由作者删除,假设url是api//delete,在前端,我只为相应的用户启用了删除按钮,如果他编辑前端页面并将其更改为自己的用户名,或者如果我使用存储的用户名检查该条件,该怎么办? 如果他成功地从前端发送了删除请求,django服务器是否能够确定当前会话中的用户不是真正的所有者,并且在前端对其进行了调整 这可能是一个愚蠢的问题

嘿,伙计们,我很困惑,现在正在考虑这个问题,我将当前用户的用户名存储在会话存储中,我有另一个页面,其中我使用存储的用户名进行api调用,它可以是任何请求

例如,一篇文章只能由作者删除,假设url是
api//delete
,在前端,我只为相应的用户启用了删除按钮,如果他编辑前端页面并将其更改为自己的用户名,或者如果我使用存储的用户名检查该条件,该怎么办? 如果他成功地从前端发送了删除请求,django服务器是否能够确定当前会话中的用户不是真正的所有者,并且在前端对其进行了调整

这可能是一个愚蠢的问题,但我是一个初学者,相当困惑


谢谢。

当然,我们需要一些代码来回答您的问题。 以下内容是否会删除其他用户的数据? 用户将用户名从客户端传递到服务器

SomeModel.objects.filter(username=username).delete()
上述操作是否会删除用户名为已从客户端传递的用户名的用户数据?对

您需要始终验证和验证服务器上的数据和权限,并且还应该考虑在当前已验证的用户上使用CRUD操作(因为您正在使用会话),因此,不必从客户机发送当前用户的用户名,如果它们被登录,则可以通过会话验证。 我建议你多读一些关于身份验证、会话等的内容


另外,我看到您使用的是RESTful API,因此我强烈建议使用

用户无法访问会话。会话数据存储在服务器端。客户端只有一个会话id,他每次都会随请求一起传递。感谢您的响应,但我感到困惑的是,如果一个人在前端将
username
变量更改为他自己的用户名,他是否可以作为另一个用户执行操作?或者它只反映在前端?但他不能,因为用户名存储在服务器端,因此他们无法控制。非常感谢,我还有一个疑问,比如在会话存储中为某些操作保存用户名和用户id是否正常?Django已经这样做了,这就是
request.user
的基本功能。感谢您的回复,所以您的意思是如果我检查条件
request.user.username==username
,然后继续…如果是这样,即使其他用户更改了用户名以匹配当前用户的用户名,服务器也不会采取任何操作??这就是你的意思吗?是的,因为当前用户的用户名与从客户端发送的用户名不同。这就是会话和身份验证令牌的用途。因此,您不必手动继续这样做,考虑使用Django的装饰器:如果使用DRF,则它们提供会话和令牌认证+权限。非常感谢。我的荣幸。此外,如果你发现你的问题的答案有用,请标记它。非常感谢。