如何在没有身份验证的情况下安全地执行 Rest 请求



这更像是一个过程逻辑问题,而不是一个特定的语言框架问题。

我正在开发一个移动应用程序,并希望用户无需登录即可使用它(即尝试并为登录用户提供加分项(,但我不希望其他人在没有某种密钥的情况下从 Postman 或任何其他平台提出发布请求,而不是应用程序, 那么这里的方法是什么?

正在考虑使用一些秘密用户名:来宾密码或某种令牌进行基本身份验证,但由于我对此完全陌生,我不确定这是否是正确的方法,我已经阅读了身份验证和权限 Django Rest 框架教程,但还没有找到解决方案

我自己正在学习 Django,并且已经掌握了该主题中更高级的主题。您可以做的是在 permissions.py 文件中为此创建一个函数。这样:

from rest_framework import permissions
class specialMobileUserPermissions(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        if request.method in request.SAFE_METHODS:
            return True
        if request.user.id == whatever your mobile users id is:
            return false
        return obj.id == request.user.id # if the user is a subscribed user and they are logged in return true
        return false # because we need a way out if none of the above works

因此,在处理权限类时,权限。SAFE_PERMISSIONS是非破坏性权限的列表。所以第一个 if 语句问你是一个 GET、HEAD 还是其他非数据更改方法。如果是这样,则返回 true。

第二个 if 语句检查发出请求的用户的用户 ID。如果该用户 ID 等于您为移动跟踪用户设置的用户 ID,它将返回 false,拒绝对此类的任何内容的权限。

在视图集中,您需要添加permissions_classes变量,如下所示

from . import permissions # your permissions.py file
class FooViewSet(viewsets.ViewSet):
    permission_classes = (permissions.specialMobileUserPermissions,)

除非你需要额外的功能,否则这应该是你需要的一切,一直到导入。我希望我有所帮助。

最新更新