rest框架具有默认的基于web的API身份验证。
path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
但是,一旦添加JWT身份验证并将权限设置为IsAuthenticated,您就不能再使用默认或内置的API身份验证。
HTTP 401 Unauthorized
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
WWW-Authenticate: Bearer realm="api"
{
"detail": "Authentication credentials were not provided."
}
我试着登录,但仍然提示我上面的错误消息。
目前,我正在构建我的项目,没有前端或客户端,只有API。因此,Django Rest Framework和Django本身提供的默认或模板是我目前正在使用的
有办法解决这个问题吗?我知道您必须将访问令牌附加到您的登录凭据中,那么如何使用rest的默认身份验证来做到这一点呢?
另外,当您添加以下代码时,上面的问题就可以解决了。不过,我不知道这是否解决问题的正确方法。
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
背景截图:
发布于 2022-06-19 18:49:43
您是否按照以下代码设置了rest框架authentication_classes:
'REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_simplejwt.authentication.JWTAuthentication',
]
我不确定它是否解决了这个问题,因为我从一位经验丰富的Django开发人员那里听说,Django的登录系统和rest框架与我们编写的自定义登录系统不同。在这个事实中,您必须附加一个JWT令牌。
https://stackoverflow.com/questions/72679138
复制相似问题