django-限制用户仅编辑自己的信息

django-限制用户仅编辑自己的信息,django,security,django-authentication,Django,Security,Django Authentication,我正在玩django,并构建了一个小应用程序,用户可以通过url访问他们的信息。我想添加通过编辑该信息的功能,但还想确保当前登录的用户(使用django.contrib.auth)只能访问他的信息。我通过在视图中执行以下操作实现了这一点(视图参数中的用户名从url中捕获): 因此,很明显,我不希望用户“johnny”通过简单地将浏览器指向/jimmy/info/edit/来编辑属于用户“jimmy”的信息。上述方法可行,但我担心的是,就安全性而言,我遗漏了一些东西。这样做对吗? 谢谢。这应该适用

我正在玩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>