Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何限制访问我的纵断面图?_Python_Django_Python 3.x - Fatal编程技术网

Python 如何限制访问我的纵断面图?

Python 如何限制访问我的纵断面图?,python,django,python-3.x,Python,Django,Python 3.x,我没有访问个人信息的权限。为此,URL中有一个pk。但是,这是有问题的,因为他们可以通过更改pk的值来访问其他用户信息。我看了医生,没有发现任何与此相关的东西。 我如何预防这个问题 path('profil/<int:pk>', views.ProfilView.as_view(), name="profil") 路径('profil/',views.ProfilView.as_view(),name=“profil”) 要求用户登录,如果不是他们自己的配置文件id,则显示401

我没有访问个人信息的权限。为此,URL中有一个pk。但是,这是有问题的,因为他们可以通过更改pk的值来访问其他用户信息。我看了医生,没有发现任何与此相关的东西。 我如何预防这个问题

path('profil/<int:pk>', views.ProfilView.as_view(), name="profil") 
路径('profil/',views.ProfilView.as_view(),name=“profil”)
要求用户登录,如果不是他们自己的配置文件id,则显示401未经授权的错误


如果有一个始终显示用户自己的配置文件的
profile/me
url,可能会很有用。

要求用户登录,如果不是他们自己的配置文件id,则显示401未经授权的错误


有一个始终显示用户自己的个人资料的
profile/me
url可能会很有用。

如果url中没有PK的理由(即,您不想使用相同的视图查看其他人的信息),您可以使您的
profileview
看起来像这样,假设它来自
DetailView

来自django.contrib.auth.mixins导入登录所需的mixin
# ...
类ProfilView(LoginRequiredMixin,DetailView):
model=用户#或其他任何情况
def get_对象(自身):
return self.request.user#始终返回当前用户
而且很简单


路径('profil/',views.ProfilView.as_view(),name=“profil”)

在您的URL配置中。

如果PK没有理由出现在URL中(即,您不想使用相同的视图查看其他人的信息),您可以使您的
ProfilView
看起来像这样,假设它源自
DetailView

来自django.contrib.auth.mixins导入登录所需的mixin
# ...
类ProfilView(LoginRequiredMixin,DetailView):
model=用户#或其他任何情况
def get_对象(自身):
return self.request.user#始终返回当前用户
而且很简单


路径('profil/',views.ProfilView.as_view(),name=“profil”)

在URL配置中。

用户通过django提供的LoginView登录。您能否在
ProfilView()
顶部提供有关您的实现的更多详细信息,如果请求的pk与用户的pk不匹配,请重定向到401页面。用户通过django提供的LoginView登录。您能否在
ProfilView()
顶部提供有关您的实现的更多详细信息,如果请求的pk与用户的pk不匹配,请重定向到401页面。区分登录的用户和正在查看数据的用户通常很有用。例如,客户级管理员应有权查看某些用户的个人资料页面,但可能不是全部;您的客户支持人员会发现,以最终用户的方式查看页面非常有用。通过使用
request.user
对登录用户和获取用户数据进行查看,您使这些用例变得更加困难。“您的客户支持人员会发现,以最终用户的方式查看页面非常有用”—您必须将其构建到每个视图中,而这些视图不是非常枯燥。我会使用类似的模拟框架来代替它。只要你查找你正在查看的用户(即不使用
request.user
来查找视图数据),并实现
can\u request\u user\u view(user)
功能,就可以完成很少的工作。没有重复你自己(
person.first\u name
vs.
request.user.first\u name
不是重复你自己,你只是从你获取的用户开始,例如通过
pk
django impersonate
可能是一个很棒的项目,但它并不能解决这个问题——至少在欧盟,您仍然需要访问控制,在欧盟,只有用户自己(
request.user==person
)才能查看某些数据。区分登录的用户通常很有用,以及正在查看数据的人。例如,客户级管理员应有权查看某些用户的个人资料页面,但可能不是全部;您的客户支持人员会发现,以最终用户的方式查看页面非常有用。通过使用
request.user
对登录用户和获取用户数据进行查看,您使这些用例变得更加困难。“您的客户支持人员会发现,以最终用户的方式查看页面非常有用”—您必须将其构建到每个视图中,而这些视图不是非常枯燥。我会使用类似的模拟框架来代替它。只要你查找你正在查看的用户(即不使用
request.user
来查找视图数据),并实现
can\u request\u user\u view(user)
功能,就可以完成很少的工作。没有重复你自己(
person.first\u name
vs.
request.user.first\u name
不是重复你自己,你只是从你获取的用户开始,例如通过
pk
django impersonate
可能是一个很棒的项目,但它并不能解决这个问题——至少在欧盟,您仍然需要访问控制,只有用户自己(
request.user==person
)才能查看某些数据。