【问题标题】:Change authentication procedure更改身份验证程序
【发布时间】:2019-11-12 17:38:49
【问题描述】:

我正在创建一个项目并首先构建它,我使用了 https://cookiecutter-django.readthedocs.io/en/latest/ 的千篇一律。

这个模板对我很有用,但现在我正在尝试为我的项目构建一个 API,但我在身份验证过程中遇到了一些问题。

一切正常,但视图通过标头中发送的令牌进行身份验证的过程。我说的观点如下:

class HelloView(APIView):
    permission_classes = (IsAuthenticated,)

    def get(self, request):
        content = {'message': 'Hello, World!'}
        return Response(content)

然后我只是向发送令牌的相应 URL 发出 http 请求,例如:

http http://127.0.0.1:8000/api/hello/ 'Authorization: Token 8b59a60cd91c29f4e2a7be54fbd6d32c7bd57377'

然后,我得到的响应是:

{
"detail": "Authentication credentials were not provided."
}

然后,如果我使用浏览器输入 URL,除非我以前登录过 Django 管理员,否则它会显示相同的内容。出于这个原因,我认为发生的基本上是身份验证过程中的一些配置问题。我在设置中添加了以下变量:

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
    'rest_framework.authentication.BasicAuthentication',
    'rest_framework.authentication.SessionAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': [
    'rest_framework.permissions.IsAuthenticated',
]
}

但是我没有更改 cookiecutter 模板身份验证的任何内容,所以正如我所说,我认为这可能是问题所在,尽管我不知道如何解决它。

我的最后一个问题是,你知道如何改变给定权限类的身份验证方式吗?

【问题讨论】:

    标签: python-3.x authentication django-rest-framework


    【解决方案1】:

    您希望用户使用令牌进行身份验证。所以需要在设置中设置token认证:

      "DEFAULT_AUTHENTICATION_CLASSES": (
            "rest_framework.authentication.TokenAuthentication",
            "rest_framework.authentication.SessionAuthentication",
            "rest_framework.authentication.BasicAuthentication",
        ),
    

    或者,如果您只希望一个视图使用令牌身份验证,而不是所有视图的默认值,您可以在视图中使用 authentication_classes 变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-09
      • 1970-01-01
      • 2019-02-14
      • 2017-12-25
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 2015-06-08
      相关资源
      最近更新 更多