首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果权限设置为IsAuthenticated,则DJANGO REST web登录不能使用JWT。

如果权限设置为IsAuthenticated,则DJANGO REST web登录不能使用JWT。
EN

Stack Overflow用户
提问于 2022-06-19 17:52:27
回答 1查看 351关注 0票数 0

rest框架具有默认的基于web的API身份验证。

代码语言:javascript
运行
复制
path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),

但是,一旦添加JWT身份验证并将权限设置为IsAuthenticated,您就不能再使用默认或内置的API身份验证。

代码语言:javascript
运行
复制
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的默认身份验证来做到这一点呢?

另外,当您添加以下代码时,上面的问题就可以解决了。不过,我不知道这是否解决问题的正确方法。

代码语言:javascript
运行
复制
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',

背景截图:

Django Rest Framework (指示我尚未登录)

Django Rest默认或内置登录页面

EN

回答 1

Stack Overflow用户

发布于 2022-06-19 18:49:43

您是否按照以下代码设置了rest框架authentication_classes:

代码语言:javascript
运行
复制
'REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
    'rest_framework_simplejwt.authentication.JWTAuthentication',
    
]

我不确定它是否解决了这个问题,因为我从一位经验丰富的Django开发人员那里听说,Django的登录系统和rest框架与我们编写的自定义登录系统不同。在这个事实中,您必须附加一个JWT令牌。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72679138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档