python-3.x - 更改身份验证程序
问题描述
我正在创建一个项目并首先构建它,我使用了https://cookiecutter-django.readthedocs.io/en/latest/的 cookie-cutter 。
这个模板对我很有用,但现在我正在尝试为我的项目构建一个 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 模板身份验证的任何内容,所以正如我所说,我认为这可能是问题所在,尽管我不知道如何解决它。
我的最后一个问题是,您知道如何在给定权限类的情况下更改身份验证的方式吗?
解决方案
您希望用户使用令牌进行身份验证。所以需要在设置中设置token认证:
"DEFAULT_AUTHENTICATION_CLASSES": (
"rest_framework.authentication.TokenAuthentication",
"rest_framework.authentication.SessionAuthentication",
"rest_framework.authentication.BasicAuthentication",
),
或者,如果您只希望一个视图使用令牌身份验证,而不是所有视图的默认值,您可以authentication_classes
在视图中使用变量。
推荐阅读
- sharepoint - 无需额外直接查询数据库的 power bi 报表数据输入
- algorithm - 关于跳舞链接/算法 X 的问题
- java - Spring 5 JdbcTemplate 不能重用 PreparedStatement?
- gdb - GDB 调试错误——“localhost:3333: Operation timed out”
- python - 创建一个 Qt 显示
- sql - 使用带有内部连接的组找到列的平均值,然后通过组进行过滤
- javascript - 如何每隔一段时间用新项目更新nativescript radlistview
- javascript - usestate 或 uuid 库中的错误?
- reactjs - 运行“gatsby-develop”时无法解析“/path/node_modules/gatsby-react-router-scroll”中的“react-dom”
- python - 过滤熊猫中的行,带分隔符的列