django-限制用户仅编辑自己的信息
我正在玩django,并构建了一个小应用程序,用户可以通过url访问他们的信息。我想添加通过编辑该信息的功能,但还想确保当前登录的用户(使用django.contrib.auth)只能访问他的信息。我通过在视图中执行以下操作实现了这一点(视图参数中的用户名从url中捕获): 因此,很明显,我不希望用户“johnny”通过简单地将浏览器指向/jimmy/info/edit/来编辑属于用户“jimmy”的信息。上述方法可行,但我担心的是,就安全性而言,我遗漏了一些东西。这样做对吗?django-限制用户仅编辑自己的信息,django,security,django-authentication,Django,Security,Django Authentication,我正在玩django,并构建了一个小应用程序,用户可以通过url访问他们的信息。我想添加通过编辑该信息的功能,但还想确保当前登录的用户(使用django.contrib.auth)只能访问他的信息。我通过在视图中执行以下操作实现了这一点(视图参数中的用户名从url中捕获): 因此,很明显,我不希望用户“johnny”通过简单地将浏览器指向/jimmy/info/edit/来编辑属于用户“jimmy”的信息。上述方法可行,但我担心的是,就安全性而言,我遗漏了一些东西。这样做对吗? 谢谢。这应该适用
谢谢。这应该适用于您正在尝试的操作,而不会有任何明显的安全风险
但是,如果没有其他人可以在这个位置看到至少一个个人资料或其他东西,为什么要显示他们的用户名呢?这不是更像一个“账户”页面吗?然后,您将不会检查url中的用户名,您可以访问的唯一url将是帐户,它将只加载登录用户的信息。使用@login\u required并解析请求。用户他们将永远不会出现在其他用户的配置文件中。我的个人资料视图
@login_required
def user_profile(request):
""" User profile page """
u = User.objects.get(pk=request.user.pk)
return render_to_response('myapp/user_profile.html', {
'user': request.user,
})
然后在模板中简单地使用如下内容:
Welcome <b>{{ user.first_name }} {{ user.last_name }}</b>
欢迎{{user.first_name}{{user.last_name}}
我明白了。我曾考虑让用户查看其他人的信息,但编辑当然应该仅限于个人数据。我非常喜欢在else
块中使用错误代码403进行响应。
Welcome <b>{{ user.first_name }} {{ user.last_name }}</b>