这更像是一个过程逻辑问题,而不是一个特定的语言框架问题。
我正在开发一个移动应用程序,并希望用户无需登录即可使用它(即尝试并为登录用户提供加分项(,但我不希望其他人在没有某种密钥的情况下从 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,)
除非你需要额外的功能,否则这应该是你需要的一切,一直到导入。我希望我有所帮助。