gpt4 book ai didi

python - 无需登录 django 即可安全地发布请求

转载 作者:行者123 更新时间:2023-11-30 22:44:15 28 4
gpt4 key购买 nike

我正在开发一个 django 服务器作为 iOS 应用程序的后端。到目前为止,我一直通过浏览器的注册页面创建新用户。我希望能够通过 iOS 应用程序中的表单注册新用户。我正在使用 Django REST 作为我的 django 服务器的移动 API。

不幸的是,为了能够发布任何请求,我需要授权。这完全没问题,因为绝大多数时候,我的用户需要登录。他们在未登录的情况下使用我的应用程序的唯一时间就是他们注册时(新用户)。

注册意味着创建一个新用户。创建新用户意味着将新数据插入数据库,当然根据 RESTful 实践,这意味着我需要使用 POST 请求。但是我还没有登录,如何在未经授权的情况下执行此操作。

关于如何实现这一点,我有两个想法,如下,但我很想知道最佳实践是什么。

1) 当新用户进入注册 View 时,django 服务器可以静默创建一个新用户帐户,并使用默认的初始数据。这个新帐户可以作为数据发送到应用程序,从而使授权正式化。注册 View 仅更新用户帐户。如果这个新用户没有更新(注册表没有及时发送),我可能需要删除它。

2) 拥有一个硬编码的“admin”用户,该用户仅用于授权这些匿名 POST 请求。我想可以将这个管理员范围限制为只有一个功能吗?

最佳答案

Django REST 框架允许您基于每个 View 设置权​​限策略。您可以使用它仅在注册 View 上允许未经身份验证的 POST 请求。例如,如果您为此使用 APIView:

from rest_framework.permissions import AllowAny
from rest_framework.views import APIView

class RegistrationView(APIView):
permission_classes = (AllowAny,)

...

您仍然可以将 IsAuthenticated 保留为所有其他 View 的默认权限。

有关更多信息,请阅读 "setting the permission policy"

关于python - 无需登录 django 即可安全地发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41571052/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com