django - 限制用户只能编辑他们自己的信息

sa1*_*125 5 security django django-authentication

我正在玩 django 并构建了一个小应用程序,用户可以在其中通过 url http:///localhost:8000/username/info/访问他们的信息。我想添加通过http:///localhost:8000/username/info/edit/编辑该信息的功能,但还想确保当前登录的用户(使用 django.contrib.auth)只能访问他的信息。我通过在视图中执行以下操作来完成此操作(视图 args 中的用户名是从 url 中捕获的):

@login_required
def edit_info(request, username=''):
    if request.user.username == username:
        # allow accessing and editing the info..
    else:
        # redirect to some error page
Run Code Online (Sandbox Code Playgroud)

所以,显然,我不希望用户“johnny”通过简单地将他的浏览器指向/jimmy/info/edit/来编辑属于用户“jimmy”的信息。以上工作,但我担心的是,就安全而言,我在这里遗漏了一些东西。这是解决这个问题的正确方法吗?谢谢。

Ale*_*ton 2

这应该适用于您想要做的事情,而不会出现任何明显的安全风险。

但是,如果其他人无法在该位置至少看到个人资料或其他内容,为什么要显示他们的用户名呢?这不是更像一个“帐户”页面吗?然后你就不会检查 url 中的用户名,你可以访问的唯一 url 是帐户,它只会加载登录用户的信息。